home *** CD-ROM | disk | FTP | other *** search
/ Clickx 115 / Clickx 115.iso / software / tools / windows / tails-i386-0.16.iso / live / filesystem.squashfs / usr / sbin / airdriver-ng < prev    next >
Encoding:
Text File  |  2011-09-22  |  109.9 KB  |  4,435 lines

  1. #!/bin/bash
  2.  
  3. #  Tool to install/uninstall and patch wireless drivers and 802.11 stacks
  4. #
  5. #  Copyright (c) 2007 Martin Beck
  6. #
  7. #  This program is free software; you can redistribute it and/or modify
  8. #  it under the terms of the GNU General Public License as published by
  9. #  the Free Software Foundation; either version 2 of the License, or
  10. #  (at your option) any later version.
  11. #
  12. #  This program is distributed in the hope that it will be useful,
  13. #  but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15. #  GNU General Public License for more details.
  16. #
  17. #  You should have received a copy of the GNU General Public License
  18. #  along with this program; if not, write to the Free Software
  19. #  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  20.  
  21.  
  22. USERID=""
  23.  
  24. #run as root?
  25.  
  26. if [ x"`which id 2> /dev/null`" != "x" ]
  27. then
  28.     USERID="`id -u 2> /dev/null`"
  29. fi
  30.  
  31. if [ x$USERID == "x" -a x$UID != "x" ]
  32. then
  33.     USERID=$UID
  34. fi
  35.  
  36. if [ x$USERID != "x" -a x$USERID != "x0" ]
  37. then
  38.     echo Run it as root ; exit ;
  39. fi
  40.  
  41. #getting commands
  42. LSPCMCIA=`which lspcmcia 2>/dev/null`
  43. IWCONFIG=`which iwconfig 2>/dev/null`
  44. MODPROBE=`which modprobe 2>/dev/null`
  45. RMMOD=`which rmmod 2>/dev/null`
  46. PATCH=`which patch 2>/dev/null`
  47. LSPCI=`which lspci 2>/dev/null`
  48. LSUSB=`which lsusb 2>/dev/null`
  49. WGET=`which wget 2>/dev/null`
  50. MAKE=`which make 2>/dev/null`
  51. GCC=`which gcc 2>/dev/null`
  52. TAR=`which tar 2>/dev/null`
  53. UNZIP=`which unzip 2>/dev/null`
  54. SVN=`which svn 2>/dev/null`
  55. CVS=`which cvs 2>/dev/null`
  56. GIT=`which git 2>/dev/null`
  57. CARDCTL=`which pccardctl 2>/dev/null`
  58.  
  59. if [ x"$CARDCTL" == x ]
  60. then
  61.     CARDCTL=`which cardctl 2>/dev/null`
  62. fi
  63.  
  64. #global variables
  65. if [ x"$KVER" == x ]
  66. then
  67.     KVER=`uname -r`
  68. fi
  69. KMAJOR=`echo $KVER | sed 's/^\([0-9]\)\..*$/\1/'`
  70. KMINOR=`echo $KVER | sed 's/^[0-9]\.\([0-9]\)\..*$/\1/'`
  71. KPATCH=`echo $KVER | sed 's/^[0-9]\.[0-9]\.\([0-9]*\).*$/\1/'`
  72. KSUBPT=`echo $KVER | sed -n 's/^[0-9]\.[0-9]\.[0-9]*\.\([0-9]*\).*$/\1/p'`
  73. KSRC="/lib/modules/$KVER/build"
  74. KMOD="/lib/modules/$KVER"
  75. KUTS=""
  76.  
  77. VANILLA="$KMAJOR.$KMINOR.$KPATCH"
  78. if [ x"$KSUBPT" != x ]
  79. then
  80.     VANILLA="$VANILLA.$KSUBPT"
  81. fi
  82.  
  83. if [ -f "$KSRC/include/linux/utsrelease.h" ]
  84. then
  85.     KUTS=`grep UTS_RELEASE $KSRC/include/linux/utsrelease.h 2>/dev/null | head -n 1 | cut -d " " -f3 | sed 's/"//g'`
  86. else
  87.     KUTS=`grep UTS_RELEASE $KSRC/include/linux/version.h 2>/dev/null | head -n 1 | cut -d " " -f3 | sed 's/"//g'`
  88. fi
  89.  
  90. if [ x"$KUTS" != x ]
  91. then
  92.     if [ x"$KUTS" != x"$KVER" ]
  93.     then
  94.         echo "-------"
  95.         echo "Your linked kernel source doesn't match your current running version."
  96.         echo "\"$KUTS\" vs. \"$KVER\""
  97.         printf "You "
  98.         if [ -d "/lib/modules/$KUTS" ]
  99.         then
  100.             printf "will probably"
  101.         else
  102.             printf "may"
  103.         fi
  104.         printf " run into problems when installing drivers.\n"
  105.         echo "-------"
  106.     fi
  107. fi
  108.  
  109. OWN_NAME=$0
  110.  
  111. D_DIR="/usr/src/drivers"
  112. LOGFILE="/var/log/airdriver"
  113.  
  114. #firmware preparation
  115. #possible paths, ordered by importance
  116. FIRMPATHS="/lib/firmware /usr/lib/firmware /lib/hotplug/firmware /usr/local/lib/firmware /usr/firmware"
  117.  
  118. for i in $FIRMPATHS
  119. do
  120.     if [ -d "$i" ]
  121.     then
  122.         FIRMPATH="$i"
  123.     fi
  124. done
  125.  
  126. if [ x"$FIRMPATH" == x ]
  127. then
  128.     FIRMPATH="/lib/firmware"
  129.     mkdir -p "$FIRMPATH"
  130. fi
  131. #done preparing firmware directory
  132.  
  133. NO_DRIVER_ERROR='You need to specify a driver number obtained from "airdriver-ng installed" or "airdriver-ng loaded"'
  134. NO_STACK_ERROR='You need to specify a stack number obtained from "airdriver-ng supported"'
  135. NO_FIRMWARE_ERROR='You need to specify a driver number obtained from "airdriver-ng supported"'
  136.  
  137. YES=1
  138. NO=0
  139. ERROR=255
  140.  
  141. NO_INSTALL=$NO
  142. NO_FIRMWARE=$NO
  143.  
  144. #distribution definition - for future enhancements - not used right now
  145. i=0
  146. LNAME[$i]="Debian"
  147. LI_UTIL[$i]="apt-get"
  148. LI_ARGUMENT[$i]="install"
  149. LI_KSOURCE[$i]=""
  150. LDETECT[$i]=""
  151.  
  152. i=$(($i+1))
  153. LNAME[$i]="Fedora"
  154. LI_UTIL[$i]="yum"
  155. LI_ARGUMENT[$i]=""
  156. LI_KSOURCE[$i]=""
  157. LDETECT[$i]="cat /etc/fedora-release 2>/dev/null"
  158.  
  159. i=$(($i+1))
  160. LNAME[$i]="Gentoo"
  161. LI_UTIL[$i]="emerge"
  162. LI_ARGUMENT[$i]="-a"
  163. LI_KSOURCE[$i]=""
  164. LDETECT[$i]=""
  165.  
  166. i=$(($i+1))
  167. LNAME[$i]="Mandriva"
  168. LI_UTIL[$i]=""
  169. LI_ARGUMENT[$i]=""
  170. LI_KSOURCE[$i]=""
  171. LDETECT[$i]=""
  172.  
  173. i=$(($i+1))
  174. LNAME[$i]="Slackware"
  175. LI_UTIL[$i]=""
  176. LI_ARGUMENT[$i]=""
  177. LI_KSOURCE[$i]=""
  178. LDETECT[$i]=""
  179.  
  180. i=$(($i+1))
  181. LNAME[$i]="openSUSE"
  182. LI_UTIL[$i]="zypper"
  183. LI_ARGUMENT[$i]="install"
  184. LI_KSOURCE[$i]="cat /etc/SuSE-release 2>/dev/null"
  185. LDETECT[$i]=""
  186.  
  187. i=$(($i+1))
  188. LNAME[$i]="[X|K]Ubuntu"
  189. LI_UTIL[$i]="apt-get"
  190. LI_ARGUMENT[$i]="install"
  191. LI_KSOURCE[$i]="linux-source-$VANILLA"
  192. LDETECT[$i]=""
  193.  
  194.  
  195. #END - distribution definition
  196. LCOUNT=$(($i+1))
  197.  
  198. #stack definition
  199.  
  200. i=0
  201. SNAME[$i]="IEEE80211"
  202. SCONFIG[$i]="CONFIG_IEEE80211="
  203. SCONFIGS[$i]="CONFIG_IEEE80211=m CONFIG_IEEE80211_CRYPT_WEP=m CONFIG_IEEE80211_CRYPT_CCMP=m CONFIG_IEEE80211_CRYPT_TKIP=m"
  204. SMODULE[$i]="ieee80211"
  205. SMODULES[$i]="ieee80211 ieee80211_crypt ieee80211_crypt_wep ieee80211_crypt_tkip ieee80211_crypt_ccmp"
  206. SI_INIT[$i]="install_ieee80211 $i"
  207. SI_DRIVERGET[$i]="cp"
  208. SI_DRIVERFILE[$i]="ieee80211_tx.c"
  209. SI_DRIVERPATH1[$i]="$KSRC/net/ieee80211"
  210. SI_DRIVERPATH2[$i]="/usr/src/linux/net/ieee80211"
  211. SI_DRIVEREXDIR[$i]=""
  212. SI_DRIVERDIR[$i]="ieee80211"
  213. SI_PREPATCH[$i]=""
  214. SI_PATCHFILE[$i]="ieee80211_inject-2.6.22.patch"
  215. SI_PATCHPATH1[$i]="http://patches.aircrack-ng.org/ieee80211_inject-2.6.22.patch"
  216. SI_PATCHPATH2[$i]="http://patches.aircrack-ng.org/old/ieee80211_inject-2.6.22.patch"
  217. SI_PATCHARG[$i]="-p3"
  218. SI_PRECOMP[$i]=""
  219. SI_COMPILE[$i]="$MAKE -C $KSRC/ M=$D_DIR/${SI_DRIVERDIR[$i]} modules"
  220. SI_INSTALL1[$i]="mkdir -p "$KMOD/kernel/net/ieee80211/""
  221. SI_INSTALL2[$i]="cp -f *.ko "$KMOD/kernel/net/ieee80211/""
  222. SSITE[$i]="http://ieee80211.sourceforge.net/"
  223.  
  224. i=$(($i+1))
  225. SNAME[$i]="IEEE80211 Softmac"
  226. SCONFIG[$i]="CONFIG_IEEE80211_SOFTMAC="
  227. SCONFIGS[$i]="CONFIG_IEEE80211_SOFTMAC=m"
  228. SMODULE[$i]="ieee80211softmac"
  229. SMODULES[$i]="ieee80211softmac"
  230. SI_INIT[$i]="install_softmac $i"
  231. SI_DRIVERGET[$i]="cp"
  232. SI_DRIVERFILE[$i]="ieee80211softmac_wx.c"
  233. SI_DRIVERPATH1[$i]="$KSRC/net/ieee80211/softmac"
  234. SI_DRIVERPATH2[$i]="/usr/src/linux/net/ieee80211/softmac"
  235. SI_DRIVEREXDIR[$i]=""
  236. SI_DRIVERDIR[$i]="softmac"
  237. SI_PREPATCH[$i]=""
  238. SI_PATCHFILE[$i]="ieee80211_softmac_adjust_bitrate.patch"
  239. SI_PATCHPATH1[$i]="http://patches.aircrack-ng.org/ieee80211_softmac_adjust_bitrate.patch"
  240. SI_PATCHPATH2[$i]="http://patches.aircrack-ng.org/old/ieee80211_softmac_adjust_bitrate.patch"
  241. SI_PATCHARG[$i]="-p4"
  242. SI_PRECOMP[$i]=""
  243. SI_COMPILE[$i]="$MAKE -C $KSRC/ M=$D_DIR/${SI_DRIVERDIR[$i]} modules"
  244. SI_INSTALL1[$i]="mkdir -p "$KMOD/kernel/net/ieee80211/softmac/""
  245. SI_INSTALL2[$i]="cp -f *.ko "$KMOD/kernel/net/ieee80211/softmac/""
  246. SSITE[$i]="http://softmac.sipsolutions.net/"
  247.  
  248. i=$(($i+1))
  249. SNAME[$i]="mac80211"
  250. SCONFIG[$i]="CONFIG_MAC80211="
  251. SCONFIGS[$i]="CONFIG_MAC80211=m"
  252. SMODULE[$i]="mac80211"
  253. SMODULES[$i]="mac80211 rc80211_simple cfg80211 nl80211 rc80211_lowest"
  254. SSITE[$i]="http://intellinuxwireless.org/?p=mac80211"
  255.  
  256. i=$(($i+1))
  257. SNAME[$i]="custom"
  258. SCONFIG[$i]=""
  259. SMODULE[$i]=""
  260. SMODULES[$i]=""
  261. SSITE[$i]=""
  262.  
  263. #END of stack definition
  264. SCOUNT=$(($i+1))
  265.  
  266. #drivers
  267. #DCOUNT = Number of known drivers
  268. #DNAME[x] = Driver name to be displayed
  269. #DMODULE[x] = Main module name to recognise installed/loaded status (complete name without trailing ".ko")
  270. #DCONFIG[x] = Configure variable in kernel config file
  271. #DMODULES[x] = All modules used by the driver (complete name without trailing ".ko")
  272. #DINSTALL[x] = Function to d/l, patch and install the driver
  273. #DSITE[x] = Website with more information about the driver
  274. #DETECT_X[x] = string to grep for while detecting devices: lsusb -v, lspci and lspcmcia -v
  275.  
  276. i=0
  277. DNAME[$i]="ACX100/111"
  278. DSTACK[$i]="0"
  279. DMODINFO[$i]=""
  280. DMODULE[$i]="acx"
  281. DCONFIG[$i]=""
  282. DCONFIGS[$i]=""
  283. DMODULES[$i]="acx"
  284. DI_INIT[$i]=""
  285. DI_DRIVERGET[$i]="wget"
  286. DI_DRIVERFILE[$i]="acx-20070101.tar.bz2"
  287. DI_DRIVERPATH1[$i]="http://www.cmartin.tk/acx/acx-20070101.tar.bz2"
  288. DI_DRIVERPATH2[$i]="http://www.hauke-m.de/fileadmin/acx/acx-20070101.tar.bz2"
  289. DI_DRIVEREXDIR[$i]=""
  290. DI_DRIVERDIR[$i]="acx-20070101"
  291. DI_PREPATCH[$i]=""
  292. DI_PATCHFILE[$i]="acx-20070101.patch"
  293. DI_PATCHPATH1[$i]="http://patches.aircrack-ng.org/acx-20070101.patch"
  294. DI_PATCHPATH2[$i]="http://patches.aircrack-ng.org/old/acx-20070101.patch"
  295. DI_PATCHARG[$i]="-p1"
  296. DI_PRECOMP[$i]=""
  297. DI_COMPILE[$i]="$MAKE -C $KSRC/ M=$D_DIR/${DI_DRIVERDIR[$i]} modules"
  298. DI_INSTALL1[$i]="mkdir -p "$KMOD/kernel/drivers/net/wireless/acx/""
  299. DI_INSTALL2[$i]="cp -f acx.ko "$KMOD/kernel/drivers/net/wireless/acx/""
  300. DF_FIRMFILES[$i]="tiacx100 tiacx100r11 tiacx111c17 tiacx100r0D tiacx100r15 tiacx111c16 tiacx111c19"
  301. DF_FIRMFILE[$i]="fw.tar.bz2"
  302. DF_FIRMPATH1[$i]="http://www.hauke-m.de/fileadmin/acx/fw.tar.bz2"
  303. DF_FIRMPATH2[$i]=""
  304. DF_FIRMDIR[$i]="fw"
  305. DF_INSTALLDIR[$i]=""
  306. DSITE[$i]="http://www.aircrack-ng.org/doku.php?id=acx"
  307. DETECT_USB[$i]=""
  308. DETECT_PCI[$i]="ACX"
  309. DETECT_CS[$i]="ACX"
  310.  
  311. i=$(($i+1))
  312. DNAME[$i]="ADMtek 8211"
  313. DSTACK[$i]="0"
  314. DMODINFO[$i]="^depends: *ieee80211"
  315. DMODULE[$i]="adm8211"
  316. DCONFIG[$i]=""
  317. DCONFIGS[$i]=""
  318. DMODULES[$i]="adm8211"
  319. DI_INIT[$i]=""
  320. DI_DRIVERGET[$i]=""
  321. DI_DRIVERFILE[$i]=""
  322. DI_DRIVERPATH1[$i]=""
  323. DI_DRIVERPATH2[$i]=""
  324. DI_DRIVEREXDIR[$i]=""
  325. DI_DRIVERDIR[$i]=""
  326. DI_PREPATCH[$i]=""
  327. DI_PATCHFILE[$i]=""
  328. DI_PATCHPATH1[$i]=""
  329. DI_PATCHPATH2[$i]=""
  330. DI_PATCHARG[$i]=""
  331. DI_PRECOMP[$i]=""
  332. DI_COMPILE[$i]=""
  333. DI_INSTALL1[$i]=""
  334. DI_INSTALL2[$i]=""
  335. DF_FIRMFILES[$i]=""
  336. DF_FIRMFILE[$i]=""
  337. DF_FIRMPATH1[$i]=""
  338. DF_FIRMPATH2[$i]=""
  339. DF_FIRMDIR[$i]=""
  340. DF_INSTALLDIR[$i]=""
  341. DSITE[$i]=""
  342. DETECT_USB[$i]=""
  343. DETECT_PCI[$i]=""
  344. DETECT_CS[$i]=""
  345.  
  346. i=$(($i+1))
  347. DNAME[$i]="ADMtek 8211"
  348. DSTACK[$i]="2"
  349. DMODINFO[$i]="^depends: *mac80211"
  350. DMODULE[$i]="adm8211"
  351. DCONFIG[$i]="CONFIG_ADM8211="
  352. DCONFIGS[$i]="CONFIG_ADM8211=m"
  353. DMODULES[$i]="adm8211"
  354. DI_INIT[$i]=""
  355. DI_DRIVERGET[$i]=""
  356. DI_DRIVERFILE[$i]=""
  357. DI_DRIVERPATH1[$i]=""
  358. DI_DRIVERPATH2[$i]=""
  359. DI_DRIVEREXDIR[$i]=""
  360. DI_DRIVERDIR[$i]=""
  361. DI_PREPATCH[$i]=""
  362. DI_PATCHFILE[$i]=""
  363. DI_PATCHPATH1[$i]=""
  364. DI_PATCHPATH2[$i]=""
  365. DI_PATCHARG[$i]=""
  366. DI_PRECOMP[$i]=""
  367. DI_COMPILE[$i]=""
  368. DI_INSTALL1[$i]=""
  369. DI_INSTALL2[$i]=""
  370. DF_FIRMFILES[$i]=""
  371. DF_FIRMFILE[$i]=""
  372. DF_FIRMPATH1[$i]=""
  373. DF_FIRMPATH2[$i]=""
  374. DF_FIRMDIR[$i]=""
  375. DF_INSTALLDIR[$i]=""
  376. DSITE[$i]=""
  377. DETECT_USB[$i]=""
  378. DETECT_PCI[$i]=""
  379. DETECT_CS[$i]=""
  380.  
  381. i=$(($i+1))
  382. DNAME[$i]="Atmel at76c50x"
  383. DSTACK[$i]="0"
  384. DMODINFO[$i]=""
  385. DMODULE[$i]="atmel"
  386. DCONFIG[$i]="CONFIG_ATMEL="
  387. DCONFIGS[$i]="CONFIG_ATMEL=m CONFIG_PCI_ATMEL=m CONFIG_PCMCIA_ATMEL=m CONFIG_TCG_ATMEL=m"
  388. DMODULES[$i]="atmel atmel_cs atmel_pci at76c505a-rfmd2958 at76c505-rfmd2958 at76c505-rfmd.ko at76c503.ko at76c503-rfmd.ko at76c503-rfmd-acc.ko at76c503-i3863.ko at76c503-i3861.ko at76_usbdfu.ko"
  389. DI_INIT[$i]=""
  390. DI_DRIVERGET[$i]=""
  391. DI_DRIVERFILE[$i]=""
  392. DI_DRIVERPATH1[$i]=""
  393. DI_DRIVERPATH2[$i]=""
  394. DI_DRIVEREXDIR[$i]=""
  395. DI_DRIVERDIR[$i]=""
  396. DI_PREPATCH[$i]=""
  397. DI_PATCHFILE[$i]=""
  398. DI_PATCHPATH1[$i]=""
  399. DI_PATCHPATH2[$i]=""
  400. DI_PATCHARG[$i]=""
  401. DI_PRECOMP[$i]=""
  402. DI_COMPILE[$i]=""
  403. DI_INSTALL1[$i]=""
  404. DI_INSTALL2[$i]=""
  405. DF_FIRMFILES[$i]="atmel_at76c502_3com.bin atmel_at76c503-rfmd.bin atmel_at76c502_3com-wpa.bin atmel_at76c504_2958-wpa.bin atmel_at76c502.bin atmel_at76c504a_2958-wpa.bin atmel_at76c502d.bin atmel_at76c504.bin atmel_at76c502d-wpa.bin atmel_at76c504c-wpa.bin atmel_at76c502e.bin atmel_at76c505a-rfmd2958.bin atmel_at76c502e-wpa.bin atmel_at76c505-rfmd2958.bin atmel_at76c502-wpa.bin atmel_at76c505-rfmd.bin atmel_at76c503-i3861.bin atmel_at76c506.bin atmel_at76c503-i3863.bin atmel_at76c506-wpa.bin atmel_at76c503-rfmd-0.90.2-140.bin atmel_at76c503-rfmd-acc.bin"
  406. DF_FIRMFILE[$i]="at76c503afw-0.1.tar.gz"
  407. DF_FIRMPATH1[$i]="http://downloads.sourceforge.net/at76c503a/at76c503afw-0.1.tar.gz"
  408. DF_FIRMPATH2[$i]="http://downloads.sourceforge.net/at76c503a/at76c503afw-0.1.tar.gz"
  409. DF_FIRMDIR[$i]="at76_usb-firmware-0.1"
  410. DF_INSTALLDIR[$i]=""
  411. DSITE[$i]=""
  412. DETECT_USB[$i]=""
  413. DETECT_PCI[$i]=""
  414. DETECT_CS[$i]=""
  415.  
  416. i=$(($i+1))
  417. DNAME[$i]="Atmel at76_usb"
  418. DSTACK[$i]="0"
  419. DMODINFO[$i]=""
  420. DMODULE[$i]="at76_usb"
  421. DCONFIG[$i]=""
  422. DCONFIGS[$i]=""
  423. DMODULES[$i]="at76_usb"
  424. DI_INIT[$i]=""
  425. DI_DRIVERGET[$i]="wget"
  426. DI_DRIVERFILE[$i]="at76_usb-0.16.tar.gz"
  427. DI_DRIVERPATH1[$i]="http://download.berlios.de/at76c503a/at76_usb-0.16.tar.gz"
  428. DI_DRIVERPATH2[$i]="http://download2.berlios.de/at76c503a/at76_usb-0.16.tar.gz"
  429. DI_DRIVEREXDIR[$i]=""
  430. DI_DRIVERDIR[$i]="at76_usb-0.16"
  431. DI_PREPATCH[$i]=""
  432. DI_PATCHFILE[$i]=""
  433. DI_PATCHPATH1[$i]=""
  434. DI_PATCHPATH2[$i]=""
  435. DI_PATCHARG[$i]=""
  436. DI_PRECOMP[$i]=""
  437. DI_COMPILE[$i]="make"
  438. DI_INSTALL1[$i]="make install"
  439. DI_INSTALL2[$i]=""
  440. DF_FIRMFILES[$i]="atmel_at76c502_3com.bin atmel_at76c503-rfmd.bin atmel_at76c502_3com-wpa.bin atmel_at76c504_2958-wpa.bin atmel_at76c502.bin atmel_at76c504a_2958-wpa.bin atmel_at76c502d.bin atmel_at76c504.bin atmel_at76c502d-wpa.bin atmel_at76c504c-wpa.bin atmel_at76c502e.bin atmel_at76c505a-rfmd2958.bin atmel_at76c502e-wpa.bin atmel_at76c505-rfmd2958.bin atmel_at76c502-wpa.bin atmel_at76c505-rfmd.bin atmel_at76c503-i3861.bin atmel_at76c506.bin atmel_at76c503-i3863.bin atmel_at76c506-wpa.bin atmel_at76c503-rfmd-0.90.2-140.bin atmel_at76c503-rfmd-acc.bin"
  441. DF_FIRMFILE[$i]="at76c503afw-0.1.tar.gz"
  442. DF_FIRMPATH1[$i]="http://downloads.sourceforge.net/at76c503a/at76c503afw-0.1.tar.gz"
  443. DF_FIRMPATH2[$i]="http://downloads.sourceforge.net/at76c503a/at76c503afw-0.1.tar.gz"
  444. DF_FIRMDIR[$i]="at76_usb-firmware-0.1"
  445. DF_INSTALLDIR[$i]=""
  446. DSITE[$i]=""
  447. DETECT_USB[$i]=""
  448. DETECT_PCI[$i]=""
  449. DETECT_CS[$i]=""
  450.  
  451. i=$(($i+1))
  452. DNAME[$i]="Broadcom 4300"
  453. DSTACK[$i]="0"
  454. DMODINFO[$i]=""
  455. DMODULE[$i]="bcm43xx"
  456. DCONFIG[$i]="CONFIG_BCM43XX="
  457. DCONFIGS[$i]="CONFIG_BCM43XX=m CONFIG_BCM43XX_DMA=y CONFIG_BCM43XX_PIO=y CONFIG_BCM43XX_DMA_AND_PIO_MODE=y"
  458. DMODULES[$i]="bcm43xx"
  459. DI_INIT[$i]=""
  460. DI_DRIVERGET[$i]="wget"
  461. DI_DRIVERFILE[$i]="linux-$VANILLA.tar.bz2"
  462. DI_DRIVERPATH1[$i]="ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-$VANILLA.tar.bz2"
  463. DI_DRIVERPATH2[$i]="ftp://ftp.de.kernel.org/pub/linux/kernel/v2.6/linux-$VANILLA.tar.bz2"
  464. DI_DRIVEREXDIR[$i]="linux-$VANILLA/drivers/net/wireless/bcm43xx"
  465. DI_DRIVERDIR[$i]="bcm43xx"
  466. DI_PREPATCH[$i]=""
  467. DI_PATCHFILE[$i]="bcm43xx-injection-linux-2.6.20.patch"
  468. DI_PATCHPATH1[$i]="http://trac.aircrack-ng.org/attachment/ticket/183/bcm43xx-injection-linux-2.6.20.patch?format=raw"
  469. DI_PATCHPATH2[$i]=""
  470. DI_PATCHARG[$i]="-p5"
  471. DI_PRECOMP[$i]=""
  472. DI_COMPILE[$i]="$MAKE -C $KSRC/ M=$D_DIR/${DI_DRIVERDIR[$i]} modules"
  473. DI_INSTALL1[$i]="mkdir -p "$KMOD/kernel/drivers/net/wireless/bcm43xx/""
  474. DI_INSTALL2[$i]="cp -f bcm43xx.ko $KMOD/kernel/drivers/net/wireless/bcm43xx/"
  475. DF_FIRMFILES[$i]=""
  476. DF_FIRMFILE[$i]=""
  477. DF_FIRMPATH1[$i]=""
  478. DF_FIRMPATH2[$i]=""
  479. DF_FIRMDIR[$i]=""
  480. DF_INSTALLDIR[$i]=""
  481. DSITE[$i]="http://www.aircrack-ng.org/doku.php?id=broadcom"
  482. DETECT_USB[$i]=""
  483. DETECT_PCI[$i]="BCM43"
  484. DETECT_CS[$i]="BCM43"
  485.  
  486. i=$(($i+1))
  487. DNAME[$i]="Broadcom 4300"
  488. DSTACK[$i]="2"
  489. DMODINFO[$i]=""
  490. DMODULE[$i]="bcm43xx-mac80211"
  491. DCONFIG[$i]="CONFIG_BCM43XX_MAC80211="
  492. DCONFIGS[$i]="CONFIG_BCM43XX_MAC80211=m CONFIG_BCM43XX_MAC80211_PCI=y CONFIG_BCM43XX_MAC80211_PCMCIA=y CONFIG_BCM43XX_MAC80211_DMA=y CONFIG_BCM43XX_MAC80211_PIO=y CONFIG_BCM43XX_MAC80211_DMA_AND_PIO_MODE=y"
  493. DMODULES[$i]="bcm43xx-mac80211.ko"
  494. DI_INIT[$i]=""
  495. DI_DRIVERGET[$i]=""
  496. DI_DRIVERFILE[$i]=""
  497. DI_DRIVERPATH1[$i]=""
  498. DI_DRIVERPATH2[$i]=""
  499. DI_DRIVEREXDIR[$i]=""
  500. DI_DRIVERDIR[$i]=""
  501. DI_PREPATCH[$i]=""
  502. DI_PATCHFILE[$i]=""
  503. DI_PATCHPATH1[$i]=""
  504. DI_PATCHPATH2[$i]=""
  505. DI_PATCHARG[$i]=""
  506. DI_PRECOMP[$i]=""
  507. DI_COMPILE[$i]=""
  508. DI_INSTALL1[$i]=""
  509. DI_INSTALL2[$i]=""
  510. DF_FIRMFILES[$i]=""
  511. DF_FIRMFILE[$i]=""
  512. DF_FIRMPATH1[$i]=""
  513. DF_FIRMPATH2[$i]=""
  514. DF_FIRMDIR[$i]=""
  515. DF_INSTALLDIR[$i]=""
  516. DSITE[$i]=""
  517. DETECT_USB[$i]=""
  518. DETECT_PCI[$i]="BCM43"
  519. DETECT_CS[$i]="BCM43"
  520.  
  521. i=$(($i+1))
  522. DNAME[$i]="Cisco/Aironet 802.11"
  523. DSTACK[$i]="1"
  524. DMODINFO[$i]=""
  525. DMODULE[$i]="airo"
  526. DCONFIG[$i]="CONFIG_AIRO="
  527. DCONFIGS[$i]="CONFIG_AIRO=m CONFIG_AIRO_CS=m"
  528. DMODULES[$i]="airo airo_cs"
  529. DI_INIT[$i]=""
  530. DI_DRIVERGET[$i]=""
  531. DI_DRIVERFILE[$i]=""
  532. DI_DRIVERPATH1[$i]=""
  533. DI_DRIVERPATH2[$i]=""
  534. DI_DRIVEREXDIR[$i]=""
  535. DI_DRIVERDIR[$i]=""
  536. DI_PREPATCH[$i]=""
  537. DI_PATCHFILE[$i]=""
  538. DI_PATCHPATH1[$i]=""
  539. DI_PATCHPATH2[$i]=""
  540. DI_PATCHARG[$i]=""
  541. DI_PRECOMP[$i]=""
  542. DI_COMPILE[$i]=""
  543. DI_INSTALL1[$i]=""
  544. DI_INSTALL2[$i]=""
  545. DF_FIRMFILES[$i]=""
  546. DF_FIRMFILE[$i]=""
  547. DF_FIRMPATH1[$i]=""
  548. DF_FIRMPATH2[$i]=""
  549. DF_FIRMDIR[$i]=""
  550. DF_INSTALLDIR[$i]=""
  551. DSITE[$i]=""
  552. DETECT_USB[$i]=""
  553. DETECT_PCI[$i]=""
  554. DETECT_CS[$i]=""
  555.  
  556. i=$(($i+1))
  557. DNAME[$i]="HostAP"
  558. DSTACK[$i]="0"
  559. DMODINFO[$i]=""
  560. DMODULE[$i]="hostap"
  561. DCONFIG[$i]="CONFIG_HOSTAP="
  562. DCONFIGS[$i]="CONFIG_HOSTAP=m CONFIG_HOSTAP_CS=m CONFIG_HOSTAP_PLX=m CONFIG_HOSTAP_PCI=m CONFIG_HOSTAP_FIRMWARE=y CONFIG_HOSTAP_FIRMWARE_NVRAM=y"
  563. DMODULES[$i]="hostap_pci hostap_plx hostap_cs hostap"
  564. DI_INIT[$i]="install_hostap $i"
  565. DI_DRIVERGET[$i]="wget"
  566. DI_DRIVERFILE[$i]="linux-$VANILLA.tar.bz2"
  567. DI_DRIVERPATH1[$i]="ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-$VANILLA.tar.bz2"
  568. DI_DRIVERPATH2[$i]="ftp://ftp.de.kernel.org/pub/linux/kernel/v2.6/linux-$VANILLA.tar.bz2"
  569. DI_DRIVEREXDIR[$i]="linux-$VANILLA/drivers/net/wireless/hostap"
  570. DI_DRIVERDIR[$i]="hostap"
  571. DI_PREPATCH[$i]=""
  572. DI_PATCHFILE[$i]="hostap-kernel-$VANILLA.patch"
  573. DI_PATCHPATH1[$i]="http://patches.aircrack-ng.org/hostap-kernel-$VANILLA.patch"
  574. DI_PATCHPATH2[$i]="http://patches.aircrack-ng.org/old/hostap-kernel-$VANILLA.patch"
  575. DI_PATCHARG[$i]="-p5"
  576. DI_PRECOMP[$i]=""
  577. DI_COMPILE[$i]="$MAKE -C $KSRC/ M=$D_DIR/${DI_DRIVERDIR[$i]} modules"
  578. DI_INSTALL1[$i]="mkdir -p "$KMOD/kernel/drivers/net/wireless/hostap/""
  579. DI_INSTALL2[$i]="cp -f *.ko $KMOD/kernel/drivers/net/wireless/hostap/"
  580. DF_FIRMFILES[$i]=""
  581. DF_FIRMFILE[$i]=""
  582. DF_FIRMPATH1[$i]=""
  583. DF_FIRMPATH2[$i]=""
  584. DF_FIRMDIR[$i]=""
  585. DF_INSTALLDIR[$i]=""
  586. DSITE[$i]="http://www.aircrack-ng.org/doku.php?id=hostap"
  587. DETECT_USB[$i]="prism2"
  588. DETECT_PCI[$i]="Intersil\|Prism"
  589. DETECT_CS[$i]="Wireless LAN"
  590.  
  591. i=$(($i+1))
  592. DNAME[$i]="Intel Pro Wireless 2100 B"
  593. DSTACK[$i]="0"
  594. DMODINFO[$i]=""
  595. DMODULE[$i]="ipw2100"
  596. DCONFIG[$i]="CONFIG_IPW2100="
  597. DCONFIGS[$i]="CONFIG_IPW2100=m CONFIG_IPW2100_MONITOR=y"
  598. DMODULES[$i]="ipw2100"
  599. DI_INIT[$i]=""
  600. DI_DRIVERGET[$i]="wget"
  601. DI_DRIVERFILE[$i]="linux-$VANILLA.tar.bz2"
  602. DI_DRIVERPATH1[$i]="ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-$VANILLA.tar.bz2"
  603. DI_DRIVERPATH2[$i]="ftp://ftp.de.kernel.org/pub/linux/kernel/v2.6/linux-$VANILLA.tar.bz2"
  604. DI_DRIVEREXDIR[$i]="linux-$VANILLA/drivers/net/wireless"
  605. DI_DRIVERDIR[$i]="ipw2100"
  606. DI_PREPATCH[$i]=""
  607. DI_PATCHFILE[$i]=""
  608. DI_PATCHPATH1[$i]=""
  609. DI_PATCHPATH2[$i]=""
  610. DI_PATCHARG[$i]=""
  611. DI_PRECOMP[$i]="ipw2100_precomp"
  612. DI_COMPILE[$i]="$MAKE -C $KSRC/ M=$D_DIR/${DI_DRIVERDIR[$i]} modules"
  613. DI_INSTALL1[$i]="mkdir -p "$KMOD/kernel/drivers/net/wireless/ipw2100/""
  614. DI_INSTALL2[$i]="cp -f ipw2100.ko $KMOD/kernel/drivers/net/wireless/ipw2100/"
  615. DF_FIRMFILES[$i]="ipw2100-1.3.fw ipw2100-1.3-i.fw ipw2100-1.3-p.fw"
  616. DF_FIRMFILE[$i]=""
  617. DF_FIRMPATH1[$i]=""
  618. DF_FIRMPATH2[$i]=""
  619. DF_FIRMDIR[$i]=""
  620. DF_INSTALLDIR[$i]=""
  621. DSITE[$i]=""
  622. DETECT_USB[$i]=""
  623. DETECT_PCI[$i]="2100"
  624. DETECT_CS[$i]=""
  625.  
  626. i=$(($i+1))
  627. DNAME[$i]="Intel Pro Wireless 2200 (B/G)/2915 (A/B/G)"
  628. DSTACK[$i]="0"
  629. DMODINFO[$i]=""
  630. DMODULE[$i]="ipw2200"
  631. DCONFIG[$i]="CONFIG_IPW2200="
  632. DCONFIGS[$i]="CONFIG_IPW2200=m CONFIG_IPW2200_MONITOR=y CONFIG_IPW2200_RADIOTAP=y CONFIG_IPW2200_PROMISCUOUS=y CONFIG_IPW2200_QOS=y"
  633. DMODULES[$i]="ipw2200"
  634. DI_INIT[$i]="install_ipw2200 $i"
  635. DI_DRIVERGET[$i]="wget"
  636. DI_DRIVERFILE[$i]="linux-$VANILLA.tar.bz2"
  637. DI_DRIVERPATH1[$i]="ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-$VANILLA.tar.bz2"
  638. DI_DRIVERPATH2[$i]="ftp://ftp.de.kernel.org/pub/linux/kernel/v2.6/linux-$VANILLA.tar.bz2"
  639. DI_DRIVEREXDIR[$i]="linux-$VANILLA/drivers/net/wireless"
  640. DI_DRIVERDIR[$i]="ipw2200"
  641. DI_PREPATCH[$i]=""
  642. DI_PATCHFILE[$i]="ipw2200-1.1.4-inject.patch"
  643. DI_PATCHPATH1[$i]="http://patches.aircrack-ng.org/ipw2200-1.1.4-inject.patch"
  644. DI_PATCHPATH2[$i]="http://patches.aircrack-ng.org/old/ipw2200-1.1.4-inject.patch"
  645. DI_PATCHARG[$i]="-p1 -f"
  646. DI_PRECOMP[$i]="ipw2200_precomp"
  647. DI_COMPILE[$i]="$MAKE -C $KSRC/ M=$D_DIR/${DI_DRIVERDIR[$i]} modules"
  648. DI_INSTALL1[$i]="mkdir -p "$KMOD/kernel/drivers/net/wireless/ipw2200/""
  649. DI_INSTALL2[$i]="cp -f ipw2200.ko $KMOD/kernel/drivers/net/wireless/ipw2200/"
  650. DF_FIRMFILES[$i]="ipw2200-ibss.fw ipw2200-bss.fw ipw2200-sniffer.fw"
  651. DF_FIRMFILE[$i]=""
  652. DF_FIRMPATH1[$i]=""
  653. DF_FIRMPATH2[$i]=""
  654. DF_FIRMDIR[$i]=""
  655. DF_INSTALLDIR[$i]=""
  656. DSITE[$i]="http://www.aircrack-ng.org/doku.php?id=ipw2200"
  657. DETECT_USB[$i]=""
  658. DETECT_PCI[$i]="2200BG"
  659. DETECT_CS[$i]=""
  660.  
  661. i=$(($i+1))
  662. DNAME[$i]="Intel Pro Wireless 3945 A/B/G"
  663. DSTACK[$i]="0"
  664. DMODINFO[$i]=""
  665. DMODULE[$i]="ipw3945"
  666. DCONFIG[$i]=""
  667. DCONFIGS[$i]=""
  668. DMODULES[$i]="ipw3945"
  669. DI_INIT[$i]=""
  670. DI_DRIVERGET[$i]="wget"
  671. DI_DRIVERFILE[$i]=""
  672. DI_DRIVERPATH1[$i]=""
  673. DI_DRIVERPATH2[$i]=""
  674. DI_DRIVEREXDIR[$i]=""
  675. DI_DRIVERDIR[$i]=""
  676. DI_PREPATCH[$i]=""
  677. DI_PATCHFILE[$i]=""
  678. DI_PATCHPATH1[$i]=""
  679. DI_PATCHPATH2[$i]=""
  680. DI_PATCHARG[$i]=""
  681. DI_PRECOMP[$i]=""
  682. DI_COMPILE[$i]=""
  683. DI_INSTALL1[$i]=""
  684. DI_INSTALL2[$i]=""
  685. DF_FIRMFILES[$i]="ipw3945.ucode"
  686. DF_FIRMFILE[$i]=""
  687. DF_FIRMPATH1[$i]=""
  688. DF_FIRMPATH2[$i]=""
  689. DF_FIRMDIR[$i]=""
  690. DF_INSTALLDIR[$i]=""
  691. DSITE[$i]="http://www.aircrack-ng.org/doku.php?id=ipw3945"
  692. DETECT_USB[$i]=""
  693. DETECT_PCI[$i]="3945"
  694. DETECT_CS[$i]=""
  695.  
  696. i=$(($i+1))
  697. DNAME[$i]="Intel Pro Wireless 3945 A/B/G - raw mode"
  698. DSTACK[$i]=""
  699. DMODINFO[$i]=""
  700. DMODULE[$i]="ipwraw"
  701. DCONFIG[$i]=""
  702. DCONFIGS[$i]=""
  703. DMODULES[$i]="ipwraw"
  704. DI_INIT[$i]=""
  705. DI_DRIVERGET[$i]="wget"
  706. DI_DRIVERFILE[$i]="ipwraw-ng-2.0.0-10072007.tar.bz2"
  707. DI_DRIVERPATH1[$i]="http://www.tu-darmstadt.de/~p_larbig/wlan/ipwraw-ng-2.0.0-10072007.tar.bz2"
  708. DI_DRIVERPATH2[$i]=""
  709. DI_DRIVEREXDIR[$i]=""
  710. DI_DRIVERDIR[$i]="ipwraw-ng"
  711. DI_PREPATCH[$i]=""
  712. DI_PATCHFILE[$i]=""
  713. DI_PATCHPATH1[$i]=""
  714. DI_PATCHPATH2[$i]=""
  715. DI_PATCHARG[$i]=""
  716. DI_PRECOMP[$i]=""
  717. DI_COMPILE[$i]="make"
  718. DI_INSTALL1[$i]="make install"
  719. DI_INSTALL2[$i]="make install_ucode"
  720. DF_FIRMFILES[$i]=""
  721. DF_FIRMFILE[$i]=""
  722. DF_FIRMPATH1[$i]=""
  723. DF_FIRMPATH2[$i]=""
  724. DF_FIRMDIR[$i]=""
  725. DF_INSTALLDIR[$i]=""
  726. DSITE[$i]="www.tu-darmstadt.de/~p_larbig/wlan/"
  727. DETECT_USB[$i]=""
  728. DETECT_PCI[$i]="3945"
  729. DETECT_CS[$i]=""
  730.  
  731. i=$(($i+1))
  732. DNAME[$i]="Intel Pro Wireless 3945 A/B/G"
  733. DSTACK[$i]="2"
  734. DMODINFO[$i]="^depends: *mac80211"
  735. DMODULE[$i]="iwl3945"
  736. DCONFIG[$i]=""
  737. DCONFIGS[$i]=""
  738. DMODULES[$i]="iwl3945"
  739. DI_INIT[$i]=""
  740. DI_DRIVERGET[$i]="git"
  741. DI_DRIVERFILE[$i]=""
  742. DI_DRIVERPATH1[$i]=""
  743. DI_DRIVERPATH2[$i]=""
  744. DI_DRIVEREXDIR[$i]=""
  745. DI_DRIVERDIR[$i]=""
  746. DI_PREPATCH[$i]=""
  747. DI_PATCHFILE[$i]=""
  748. DI_PATCHPATH1[$i]=""
  749. DI_PATCHPATH2[$i]=""
  750. DI_PATCHARG[$i]=""
  751. DI_PRECOMP[$i]=""
  752. DI_COMPILE[$i]=""
  753. DI_INSTALL1[$i]=""
  754. DI_INSTALL2[$i]=""
  755. DF_FIRMFILES[$i]=""
  756. DF_FIRMFILE[$i]=""
  757. DF_FIRMPATH1[$i]=""
  758. DF_FIRMPATH2[$i]=""
  759. DF_FIRMDIR[$i]=""
  760. DF_INSTALLDIR[$i]=""
  761. DSITE[$i]="http://www.aircrack-ng.org/doku.php?id=ipw3945"
  762. DETECT_USB[$i]=""
  763. DETECT_PCI[$i]="3945"
  764. DETECT_CS[$i]=""
  765.  
  766. i=$(($i+1))
  767. DNAME[$i]="Intel Pro Wireless 4965 A/B/G/N"
  768. DSTACK[$i]="2"
  769. DMODINFO[$i]="^depends: *mac80211"
  770. DMODULE[$i]="iwl4965"
  771. DCONFIG[$i]=""
  772. DCONFIGS[$i]=""
  773. DMODULES[$i]="iwl4965"
  774. DI_INIT[$i]=""
  775. DI_DRIVERGET[$i]="git"
  776. DI_DRIVERFILE[$i]=""
  777. DI_DRIVERPATH1[$i]=""
  778. DI_DRIVERPATH2[$i]=""
  779. DI_DRIVEREXDIR[$i]=""
  780. DI_DRIVERDIR[$i]=""
  781. DI_PREPATCH[$i]=""
  782. DI_PATCHFILE[$i]=""
  783. DI_PATCHPATH1[$i]=""
  784. DI_PATCHPATH2[$i]=""
  785. DI_PATCHARG[$i]=""
  786. DI_PRECOMP[$i]=""
  787. DI_COMPILE[$i]=""
  788. DI_INSTALL1[$i]=""
  789. DI_INSTALL2[$i]=""
  790. DF_FIRMFILES[$i]=""
  791. DF_FIRMFILE[$i]=""
  792. DF_FIRMPATH1[$i]=""
  793. DF_FIRMPATH2[$i]=""
  794. DF_FIRMDIR[$i]=""
  795. DF_INSTALLDIR[$i]=""
  796. DSITE[$i]=""
  797. DETECT_USB[$i]=""
  798. DETECT_PCI[$i]="4965"
  799. DETECT_CS[$i]=""
  800.  
  801. i=$(($i+1))
  802. DNAME[$i]="Lucent Hermes and Prism II"
  803. DSTACK[$i]="0"
  804. DMODINFO[$i]=""
  805. DMODULE[$i]="hermes"
  806. DCONFIG[$i]="CONFIG_HERMES="
  807. DCONFIGS[$i]="CONFIG_HERMES=m CONFIG_PLX_HERMES=m CONFIG_TMD_HERMES=m CONFIG_NORTEL_HERMES=m CONFIG_PCI_HERMES=m CONFIG_PCMCIA_HERMES=m"
  808. DMODULES[$i]="hermes orinoco orinoco_nortel orinoco_pci orinoco_plx orinoco_tmd orinoco_cs spectrum_cs"
  809. DI_INIT[$i]="install_hermes $i"
  810. DI_DRIVERGET[$i]="wget"
  811. DI_DRIVERFILE[$i]="orinoco-0.13e-SN-14.tar.bz2"
  812. DI_DRIVERPATH1[$i]="http://www.projectiwear.org/~plasmahh/orinoco-0.13e-SN-14.tar.bz2"
  813. DI_DRIVERPATH2[$i]=""
  814. DI_DRIVEREXDIR[$i]=""
  815. DI_DRIVERDIR[$i]="orinoco-0.13e-SN-14"
  816. DI_PREPATCH[$i]=""
  817. DI_PATCHFILE[$i]=""
  818. DI_PATCHPATH1[$i]=""
  819. DI_PATCHPATH2[$i]=""
  820. DI_PATCHARG[$i]=""
  821. DI_PRECOMP[$i]=""
  822. DI_COMPILE[$i]="$MAKE"
  823. DI_INSTALL1[$i]="$MAKE install"
  824. DI_INSTALL2[$i]=""
  825. DF_FIRMFILES[$i]=""
  826. DF_FIRMFILE[$i]=""
  827. DF_FIRMPATH1[$i]=""
  828. DF_FIRMPATH2[$i]=""
  829. DF_FIRMDIR[$i]=""
  830. DF_INSTALLDIR[$i]=""
  831. DSITE[$i]=""
  832. DETECT_USB[$i]=""
  833. DETECT_PCI[$i]=""
  834. DETECT_CS[$i]=""
  835.  
  836. i=$(($i+1))
  837. DNAME[$i]="Madwifi[-ng]"
  838. DSTACK[$i]="0"
  839. DMODINFO[$i]=""
  840. DMODULE[$i]="ath_pci"
  841. DCONFIG[$i]=""
  842. DCONFIGS[$i]=""
  843. DMODULES[$i]="wlan_wep ath_rate_sample ath_rate_onoe ath_pci ath_hal ath_rate_amrr ath_rate_minstrel wlan_xauth wlan_tkip wlan_ccmp wlan_acl wlan wlan_scan_ap wlan_scan_sta"
  844. DI_INIT[$i]=""
  845. DI_DRIVERGET[$i]="wget"
  846. DI_DRIVERFILE[$i]="madwifi-trunk-r4104-20100112.tar.gz"
  847. DI_DRIVERPATH1[$i]="http://snapshots.madwifi-project.org/madwifi-trunk/madwifi-trunk-r4104-20100112.tar.gz"
  848. DI_DRIVERPATH2[$i]=""
  849. DI_DRIVEREXDIR[$i]=""
  850. DI_DRIVERDIR[$i]="madwifi-trunk-r4104-20100112"
  851. DI_PREPATCH[$i]=""
  852. DI_PATCHFILE[$i]=""
  853. DI_PATCHPATH1[$i]=""
  854. DI_PATCHPATH2[$i]=""
  855. DI_PATCHARG[$i]="-p1"
  856. DI_PRECOMP[$i]="export KERNELRELEASE=$KVER"
  857. DI_COMPILE[$i]="$MAKE"
  858. DI_INSTALL1[$i]="madwifi_install"
  859. DI_INSTALL2[$i]=""
  860. DF_FIRMFILES[$i]=""
  861. DF_FIRMFILE[$i]=""
  862. DF_FIRMPATH1[$i]=""
  863. DF_FIRMPATH2[$i]=""
  864. DF_FIRMDIR[$i]=""
  865. DF_INSTALLDIR[$i]=""
  866. DSITE[$i]="http://www.aircrack-ng.org/doku.php?id=madwifi-ng"
  867. DETECT_USB[$i]=""
  868. DETECT_PCI[$i]="Atheros"
  869. DETECT_CS[$i]="atheros\|Atheros"
  870.  
  871. i=$(($i+1))
  872. DNAME[$i]="Prism54"
  873. DSTACK[$i]="0"
  874. DMODINFO[$i]=""
  875. DMODULE[$i]="prism54"
  876. DCONFIG[$i]="CONFIG_PRISM54="
  877. DCONFIGS[$i]="CONFIG_PRISM54=m"
  878. DMODULES[$i]="prism54"
  879. DI_INIT[$i]=""
  880. DI_DRIVERGET[$i]="wget"
  881. DI_DRIVERFILE[$i]="prism54_r531.tar.gz"
  882. DI_DRIVERPATH1[$i]="http://svnweb.tuxfamily.org/dl.php?repname=prism54/prism54&path=%2Ftrunk%2F&rev=531&isdir=1"
  883. DI_DRIVERPATH2[$i]=""
  884. DI_DRIVEREXDIR[$i]=""
  885. DI_DRIVERDIR[$i]="trunk"
  886. DI_PREPATCH[$i]=""
  887. DI_PATCHFILE[$i]="prism54-svn-20050724.patch"
  888. DI_PATCHPATH1[$i]="http://patches.aircrack-ng.org/prism54-svn-20050724.patch"
  889. DI_PATCHPATH2[$i]="http://patches.aircrack-ng.org/old/prism54-svn-20050724.patch"
  890. DI_PATCHARG[$i]="-p1"
  891. DI_PRECOMP[$i]=""
  892. DI_COMPILE[$i]="$MAKE modules"
  893. DI_INSTALL1[$i]="$MAKE install"
  894. DI_INSTALL2[$i]=""
  895. DF_FIRMFILES[$i]="gw3887 isl3886_usb"
  896. DF_FIRMFILE[$i]="p54u_firmwares.tar.bz2"
  897. DF_FIRMPATH1[$i]="http://prism54.org/firmware/p54u_firmwares.tar.bz2"
  898. DF_FIRMPATH2[$i]=""
  899. DF_FIRMDIR[$i]="boot/firmware"
  900. DF_INSTALLDIR[$i]=""
  901. DSITE[$i]="http://www.aircrack-ng.org/doku.php?id=prism54"
  902. DETECT_USB[$i]=""
  903. DETECT_PCI[$i]="Prism Javelin\|Prism Xbow\|Prism GT\|Prism Duette"
  904. DETECT_CS[$i]=""
  905.  
  906. i=$(($i+1))
  907. DNAME[$i]="Prism54"
  908. DSTACK[$i]="2"
  909. DMODINFO[$i]=""
  910. DMODULE[$i]="prism54common"
  911. DCONFIG[$i]="CONFIG_P54_COMMON="
  912. DCONFIGS[$i]="CONFIG_P54_COMMON=m CONFIG_P54_USB=m CONFIG_P54_PCI=m"
  913. DMODULES[$i]="prism54common prism54pci prism54usb"
  914. DI_INIT[$i]=""
  915. DI_DRIVERGET[$i]=""
  916. DI_DRIVERFILE[$i]=""
  917. DI_DRIVERPATH1[$i]=""
  918. DI_DRIVERPATH2[$i]=""
  919. DI_DRIVEREXDIR[$i]=""
  920. DI_DRIVERDIR[$i]=""
  921. DI_PREPATCH[$i]=""
  922. DI_PATCHFILE[$i]=""
  923. DI_PATCHPATH1[$i]=""
  924. DI_PATCHPATH2[$i]=""
  925. DI_PATCHARG[$i]=""
  926. DI_PRECOMP[$i]=""
  927. DI_COMPILE[$i]=""
  928. DI_INSTALL1[$i]=""
  929. DI_INSTALL2[$i]=""
  930. DF_FIRMFILES[$i]="gw3887 isl3886_usb"
  931. DF_FIRMFILE[$i]="p54u_firmwares.tar.bz2"
  932. DF_FIRMPATH1[$i]="http://prism54.org/firmware/p54u_firmwares.tar.bz2"
  933. DF_FIRMPATH2[$i]=""
  934. DF_FIRMDIR[$i]="boot/firmware"
  935. DF_INSTALLDIR[$i]=""
  936. DSITE[$i]=""
  937. DETECT_USB[$i]=""
  938. DETECT_PCI[$i]="Prism Javelin\|Prism Xbow\|Prism GT\|Prism Duette"
  939. DETECT_CS[$i]=""
  940.  
  941. i=$(($i+1))
  942. DNAME[$i]="Ralink rt2400 (legacy)"
  943. DSTACK[$i]=""
  944. DMODINFO[$i]=""
  945. DMODULE[$i]="rt2400"
  946. DCONFIG[$i]="CONFIG_RT2400="
  947. DCONFIGS[$i]="CONFIG_RT2400=m"
  948. DMODULES[$i]="rt2400"
  949. DI_INIT[$i]="rm -rf source/"
  950. DI_DRIVERGET[$i]="cvs"
  951. DI_DRIVERFILE[$i]=""
  952. DI_DRIVERPATH1[$i]="-d:pserver:anonymous@rt2400.cvs.sourceforge.net:/cvsroot/rt2400"
  953. DI_DRIVERPATH2[$i]="source/rt2400"
  954. DI_DRIVEREXDIR[$i]=""
  955. DI_DRIVERDIR[$i]="source/rt2400/Module"
  956. DI_PREPATCH[$i]=""
  957. DI_PATCHFILE[$i]=""
  958. DI_PATCHPATH1[$i]=""
  959. DI_PATCHPATH2[$i]=""
  960. DI_PATCHARG[$i]=""
  961. DI_PRECOMP[$i]=""
  962. DI_COMPILE[$i]="$MAKE"
  963. DI_INSTALL1[$i]="$MAKE install"
  964. DI_INSTALL2[$i]=""
  965. DF_FIRMFILES[$i]=""
  966. DF_FIRMFILE[$i]=""
  967. DF_FIRMPATH1[$i]=""
  968. DF_FIRMPATH2[$i]=""
  969. DF_FIRMDIR[$i]=""
  970. DF_INSTALLDIR[$i]=""
  971. DSITE[$i]=""
  972. DETECT_USB[$i]=""
  973. DETECT_PCI[$i]="RT2400"
  974. DETECT_CS[$i]=""
  975.  
  976. i=$(($i+1))
  977. DNAME[$i]="Ralink rt2400 (rt2x00)"
  978. DSTACK[$i]="0"
  979. DMODINFO[$i]="^depends:.*80211"
  980. DMODULE[$i]="rt2400pci"
  981. DCONFIG[$i]="CONFIG_RT2400PCI="
  982. DCONFIGS[$i]="CONFIG_RT2400PCI=m"
  983. DMODULES[$i]="rt2400pci"
  984. DI_INIT[$i]=""
  985. DI_DRIVERGET[$i]=""
  986. DI_DRIVERFILE[$i]=""
  987. DI_DRIVERPATH1[$i]=""
  988. DI_DRIVERPATH2[$i]=""
  989. DI_DRIVEREXDIR[$i]=""
  990. DI_DRIVERDIR[$i]=""
  991. DI_PREPATCH[$i]=""
  992. DI_PATCHFILE[$i]=""
  993. DI_PATCHPATH1[$i]=""
  994. DI_PATCHPATH2[$i]=""
  995. DI_PATCHARG[$i]=""
  996. DI_PRECOMP[$i]=""
  997. DI_COMPILE[$i]=""
  998. DI_INSTALL1[$i]=""
  999. DI_INSTALL2[$i]=""
  1000. DF_FIRMFILES[$i]=""
  1001. DF_FIRMFILE[$i]=""
  1002. DF_FIRMPATH1[$i]=""
  1003. DF_FIRMPATH2[$i]=""
  1004. DF_FIRMDIR[$i]=""
  1005. DF_INSTALLDIR[$i]=""
  1006. DSITE[$i]=""
  1007. DETECT_USB[$i]=""
  1008. DETECT_PCI[$i]="RT2400"
  1009. DETECT_CS[$i]=""
  1010.  
  1011. i=$(($i+1))
  1012. DNAME[$i]="Ralink rt2400 (rt2x00)"
  1013. DSTACK[$i]="2"
  1014. DMODINFO[$i]="^depends:.*rt2x00lib"
  1015. DMODULE[$i]="rt2400pci"
  1016. DCONFIG[$i]="CONFIG_RT2400PCI="
  1017. DCONFIGS[$i]="CONFIG_RT2400PCI=m"
  1018. DMODULES[$i]="rt2400pci"
  1019. DI_INIT[$i]=""
  1020. DI_DRIVERGET[$i]=""
  1021. DI_DRIVERFILE[$i]=""
  1022. DI_DRIVERPATH1[$i]=""
  1023. DI_DRIVERPATH2[$i]=""
  1024. DI_DRIVEREXDIR[$i]=""
  1025. DI_DRIVERDIR[$i]=""
  1026. DI_PREPATCH[$i]=""
  1027. DI_PATCHFILE[$i]=""
  1028. DI_PATCHPATH1[$i]=""
  1029. DI_PATCHPATH2[$i]=""
  1030. DI_PATCHARG[$i]=""
  1031. DI_PRECOMP[$i]=""
  1032. DI_COMPILE[$i]=""
  1033. DI_INSTALL1[$i]=""
  1034. DI_INSTALL2[$i]=""
  1035. DF_FIRMFILES[$i]=""
  1036. DF_FIRMFILE[$i]=""
  1037. DF_FIRMPATH1[$i]=""
  1038. DF_FIRMPATH2[$i]=""
  1039. DF_FIRMDIR[$i]=""
  1040. DF_INSTALLDIR[$i]=""
  1041. DSITE[$i]=""
  1042. DETECT_USB[$i]=""
  1043. DETECT_PCI[$i]="RT2400"
  1044. DETECT_CS[$i]=""
  1045.  
  1046. i=$(($i+1))
  1047. DNAME[$i]="Ralink rt2500 (legacy)"
  1048. DSTACK[$i]=""
  1049. DMODINFO[$i]=""
  1050. DMODULE[$i]="rt2500"
  1051. DCONFIG[$i]=""
  1052. DCONFIGS[$i]=""
  1053. DMODULES[$i]="rt2500"
  1054. DI_INIT[$i]="rm -rf source/"
  1055. DI_DRIVERGET[$i]="cvs"
  1056. DI_DRIVERFILE[$i]=""
  1057. DI_DRIVERPATH1[$i]="-d:pserver:anonymous@rt2400.cvs.sourceforge.net:/cvsroot/rt2400"
  1058. DI_DRIVERPATH2[$i]="source/rt2500"
  1059. DI_DRIVEREXDIR[$i]=""
  1060. DI_DRIVERDIR[$i]="source/rt2500/Module"
  1061. DI_PREPATCH[$i]=""
  1062. DI_PATCHFILE[$i]=""
  1063. DI_PATCHPATH1[$i]=""
  1064. DI_PATCHPATH2[$i]=""
  1065. DI_PATCHARG[$i]=""
  1066. DI_PRECOMP[$i]=""
  1067. DI_COMPILE[$i]="$MAKE"
  1068. DI_INSTALL1[$i]="$MAKE install"
  1069. DI_INSTALL2[$i]=""
  1070. DF_FIRMFILES[$i]=""
  1071. DF_FIRMFILE[$i]=""
  1072. DF_FIRMPATH1[$i]=""
  1073. DF_FIRMPATH2[$i]=""
  1074. DF_FIRMDIR[$i]=""
  1075. DF_INSTALLDIR[$i]=""
  1076. DSITE[$i]="http://www.aircrack-ng.org/doku.php?id=rt2500"
  1077. DETECT_USB[$i]=""
  1078. DETECT_PCI[$i]="RT2500"
  1079. DETECT_CS[$i]=""
  1080.  
  1081. i=$(($i+1))
  1082. DNAME[$i]="Ralink rt2500 (rt2x00)"
  1083. DSTACK[$i]="0"
  1084. DMODINFO[$i]="^depends:.*80211"
  1085. DMODULE[$i]="rt2500pci"
  1086. DCONFIG[$i]="CONFIG_RT2500PCI="
  1087. DCONFIGS[$i]="CONFIG_RT2500PCI=m"
  1088. DMODULES[$i]="rt2500pci"
  1089. DI_INIT[$i]=""
  1090. DI_DRIVERGET[$i]=""
  1091. DI_DRIVERFILE[$i]=""
  1092. DI_DRIVERPATH1[$i]=""
  1093. DI_DRIVERPATH2[$i]=""
  1094. DI_DRIVEREXDIR[$i]=""
  1095. DI_DRIVERDIR[$i]=""
  1096. DI_PREPATCH[$i]=""
  1097. DI_PATCHFILE[$i]=""
  1098. DI_PATCHPATH1[$i]=""
  1099. DI_PATCHPATH2[$i]=""
  1100. DI_PATCHARG[$i]=""
  1101. DI_PRECOMP[$i]=""
  1102. DI_COMPILE[$i]=""
  1103. DI_INSTALL1[$i]=""
  1104. DI_INSTALL2[$i]=""
  1105. DF_FIRMFILES[$i]=""
  1106. DF_FIRMFILE[$i]=""
  1107. DF_FIRMPATH1[$i]=""
  1108. DF_FIRMPATH2[$i]=""
  1109. DF_FIRMDIR[$i]=""
  1110. DF_INSTALLDIR[$i]=""
  1111. DSITE[$i]=""
  1112. DETECT_USB[$i]=""
  1113. DETECT_PCI[$i]="RT2500"
  1114. DETECT_CS[$i]=""
  1115.  
  1116. i=$(($i+1))
  1117. DNAME[$i]="Ralink rt2500 (rt2x00)"
  1118. DSTACK[$i]="2"
  1119. DMODINFO[$i]="^depends:.*rt2x00lib"
  1120. DMODULE[$i]="rt2500pci"
  1121. DCONFIG[$i]="CONFIG_RT2500PCI="
  1122. DCONFIGS[$i]="CONFIG_RT2500PCI=m"
  1123. DMODULES[$i]="rt2500pci"
  1124. DI_INIT[$i]=""
  1125. DI_DRIVERGET[$i]=""
  1126. DI_DRIVERFILE[$i]=""
  1127. DI_DRIVERPATH1[$i]=""
  1128. DI_DRIVERPATH2[$i]=""
  1129. DI_DRIVEREXDIR[$i]=""
  1130. DI_DRIVERDIR[$i]=""
  1131. DI_PREPATCH[$i]=""
  1132. DI_PATCHFILE[$i]=""
  1133. DI_PATCHPATH1[$i]=""
  1134. DI_PATCHPATH2[$i]=""
  1135. DI_PATCHARG[$i]=""
  1136. DI_PRECOMP[$i]=""
  1137. DI_COMPILE[$i]=""
  1138. DI_INSTALL1[$i]=""
  1139. DI_INSTALL2[$i]=""
  1140. DF_FIRMFILES[$i]=""
  1141. DF_FIRMFILE[$i]=""
  1142. DF_FIRMPATH1[$i]=""
  1143. DF_FIRMPATH2[$i]=""
  1144. DF_FIRMDIR[$i]=""
  1145. DF_INSTALLDIR[$i]=""
  1146. DSITE[$i]=""
  1147. DETECT_USB[$i]=""
  1148. DETECT_PCI[$i]="RT2500"
  1149. DETECT_CS[$i]=""
  1150.  
  1151. i=$(($i+1))
  1152. DNAME[$i]="Ralink rt2570 (legacy)"
  1153. DSTACK[$i]=""
  1154. DMODINFO[$i]=""
  1155. DMODULE[$i]="rt2570"
  1156. DCONFIG[$i]=""
  1157. DCONFIGS[$i]=""
  1158. DMODULES[$i]="rt2570"
  1159. DI_INIT[$i]="rm -rf rt2570-k2wrlz-1.6.3/"
  1160. DI_DRIVERGET[$i]="wget"
  1161. DI_DRIVERFILE[$i]="rt2570-k2wrlz-1.6.3.tar.bz2"
  1162. DI_DRIVERPATH1[$i]="http://homepages.tu-darmstadt.de/~p_larbig/wlan/rt2570-k2wrlz-1.6.3.tar.bz2"
  1163. DI_DRIVERPATH2[$i]=""
  1164. DI_DRIVEREXDIR[$i]=""
  1165. DI_DRIVERDIR[$i]="rt2570-k2wrlz-1.6.3/Module"
  1166. DI_PREPATCH[$i]=""
  1167. DI_PATCHFILE[$i]=""
  1168. DI_PATCHPATH1[$i]=""
  1169. DI_PATCHPATH2[$i]=""
  1170. DI_PATCHARG[$i]=""
  1171. DI_PRECOMP[$i]=""
  1172. DI_COMPILE[$i]="$MAKE"
  1173. DI_INSTALL1[$i]="$MAKE install"
  1174. DI_INSTALL2[$i]=""
  1175. DF_FIRMFILES[$i]=""
  1176. DF_FIRMFILE[$i]=""
  1177. DF_FIRMPATH1[$i]=""
  1178. DF_FIRMPATH2[$i]=""
  1179. DF_FIRMDIR[$i]=""
  1180. DF_INSTALLDIR[$i]=""
  1181. DSITE[$i]="http://www.aircrack-ng.org/doku.php?id=rt2570"
  1182. DETECT_USB[$i]="G122 802.11g rev. B1"
  1183. DETECT_PCI[$i]=""
  1184. DETECT_CS[$i]=""
  1185.  
  1186. i=$(($i+1))
  1187. DNAME[$i]="Ralink rt2570 (rt2x00)"
  1188. DSTACK[$i]="0"
  1189. DMODINFO[$i]="^depends:.*80211"
  1190. DMODULE[$i]="rt2500usb"
  1191. DCONFIG[$i]="CONFIG_RT2500USB="
  1192. DCONFIGS[$i]="CONFIG_RT2500USB=m"
  1193. DMODULES[$i]="rt2500usb"
  1194. DI_INIT[$i]=""
  1195. DI_DRIVERGET[$i]=""
  1196. DI_DRIVERFILE[$i]=""
  1197. DI_DRIVERPATH1[$i]=""
  1198. DI_DRIVERPATH2[$i]=""
  1199. DI_DRIVEREXDIR[$i]=""
  1200. DI_DRIVERDIR[$i]=""
  1201. DI_PREPATCH[$i]=""
  1202. DI_PATCHFILE[$i]=""
  1203. DI_PATCHPATH1[$i]=""
  1204. DI_PATCHPATH2[$i]=""
  1205. DI_PATCHARG[$i]=""
  1206. DI_PRECOMP[$i]=""
  1207. DI_COMPILE[$i]=""
  1208. DI_INSTALL1[$i]=""
  1209. DI_INSTALL2[$i]=""
  1210. DF_FIRMFILES[$i]=""
  1211. DF_FIRMFILE[$i]=""
  1212. DF_FIRMPATH1[$i]=""
  1213. DF_FIRMPATH2[$i]=""
  1214. DF_FIRMDIR[$i]=""
  1215. DF_INSTALLDIR[$i]=""
  1216. DSITE[$i]=""
  1217. DETECT_USB[$i]=""
  1218. DETECT_PCI[$i]=""
  1219. DETECT_CS[$i]=""
  1220.  
  1221. i=$(($i+1))
  1222. DNAME[$i]="Ralink rt2570 (rt2x00)"
  1223. DSTACK[$i]="2"
  1224. DMODINFO[$i]="^depends:.*rt2x00lib"
  1225. DMODULE[$i]="rt2500usb"
  1226. DCONFIG[$i]="CONFIG_RT2500USB="
  1227. DCONFIGS[$i]="CONFIG_RT2500USB=m"
  1228. DMODULES[$i]="rt2500usb"
  1229. DI_INIT[$i]=""
  1230. DI_DRIVERGET[$i]=""
  1231. DI_DRIVERFILE[$i]=""
  1232. DI_DRIVERPATH1[$i]=""
  1233. DI_DRIVERPATH2[$i]=""
  1234. DI_DRIVEREXDIR[$i]=""
  1235. DI_DRIVERDIR[$i]=""
  1236. DI_PREPATCH[$i]=""
  1237. DI_PATCHFILE[$i]=""
  1238. DI_PATCHPATH1[$i]=""
  1239. DI_PATCHPATH2[$i]=""
  1240. DI_PATCHARG[$i]=""
  1241. DI_PRECOMP[$i]=""
  1242. DI_COMPILE[$i]=""
  1243. DI_INSTALL1[$i]=""
  1244. DI_INSTALL2[$i]=""
  1245. DF_FIRMFILES[$i]=""
  1246. DF_FIRMFILE[$i]=""
  1247. DF_FIRMPATH1[$i]=""
  1248. DF_FIRMPATH2[$i]=""
  1249. DF_FIRMDIR[$i]=""
  1250. DF_INSTALLDIR[$i]=""
  1251. DSITE[$i]=""
  1252. DETECT_USB[$i]=""
  1253. DETECT_PCI[$i]=""
  1254. DETECT_CS[$i]=""
  1255.  
  1256. i=$(($i+1))
  1257. DNAME[$i]="Ralink rt61 (legacy)"
  1258. DSTACK[$i]=""
  1259. DMODINFO[$i]=""
  1260. DMODULE[$i]="rt61"
  1261. DCONFIG[$i]=""
  1262. DCONFIGS[$i]=""
  1263. DMODULES[$i]="rt61"
  1264. DI_INIT[$i]="rm -rf source/"
  1265. DI_DRIVERGET[$i]="cvs"
  1266. DI_DRIVERFILE[$i]=""
  1267. DI_DRIVERPATH1[$i]="-d:pserver:anonymous@rt2400.cvs.sourceforge.net:/cvsroot/rt2400"
  1268. DI_DRIVERPATH2[$i]="source/rt61"
  1269. DI_DRIVEREXDIR[$i]=""
  1270. DI_DRIVERDIR[$i]="source/rt61/Module"
  1271. DI_PREPATCH[$i]=""
  1272. DI_PATCHFILE[$i]=""
  1273. DI_PATCHPATH1[$i]=""
  1274. DI_PATCHPATH2[$i]=""
  1275. DI_PATCHARG[$i]=""
  1276. DI_PRECOMP[$i]=""
  1277. DI_COMPILE[$i]="$MAKE"
  1278. DI_INSTALL1[$i]="$MAKE install"
  1279. DI_INSTALL2[$i]=""
  1280. DF_FIRMFILES[$i]="rt2561.bin rt2561s.bin rt2661.bin rt61sta.dat"
  1281. DF_FIRMFILE[$i]="rt61-1.1.0-b2.tar.gz"
  1282. DF_FIRMPATH1[$i]="http://prdownloads.sourceforge.net/rt2400/rt61-1.1.0-b2.tar.gz"
  1283. DF_FIRMPATH2[$i]="http://prdownloads.sourceforge.net/rt2400/rt61-1.1.0-b2.tar.gz"
  1284. DF_FIRMDIR[$i]="rt61-1.1.0-b2"
  1285. DF_INSTALLDIR[$i]=""
  1286. DSITE[$i]="http://www.aircrack-ng.org/doku.php?id=rt61"
  1287. DETECT_USB[$i]=""
  1288. DETECT_PCI[$i]="RT61\|RT2600\|RT2561"
  1289. DETECT_CS[$i]=""
  1290.  
  1291. i=$(($i+1))
  1292. DNAME[$i]="Ralink rt61 (rt2x00)"
  1293. DSTACK[$i]="0"
  1294. DMODINFO[$i]="^depends:.*80211"
  1295. DMODULE[$i]="rt61pci"
  1296. DCONFIG[$i]="CONFIG_RT61PCI="
  1297. DCONFIGS[$i]="CONFIG_RT61PCI=m"
  1298. DMODULES[$i]="rt61pci"
  1299. DI_INIT[$i]=""
  1300. DI_DRIVERGET[$i]=""
  1301. DI_DRIVERFILE[$i]=""
  1302. DI_DRIVERPATH1[$i]=""
  1303. DI_DRIVERPATH2[$i]=""
  1304. DI_DRIVEREXDIR[$i]=""
  1305. DI_DRIVERDIR[$i]=""
  1306. DI_PREPATCH[$i]=""
  1307. DI_PATCHFILE[$i]=""
  1308. DI_PATCHPATH1[$i]=""
  1309. DI_PATCHPATH2[$i]=""
  1310. DI_PATCHARG[$i]=""
  1311. DI_PRECOMP[$i]=""
  1312. DI_COMPILE[$i]=""
  1313. DI_INSTALL1[$i]=""
  1314. DI_INSTALL2[$i]=""
  1315. DF_FIRMFILES[$i]="rt2561.bin rt2561s.bin rt2661.bin rt61sta.dat"
  1316. DF_FIRMFILE[$i]="rt61-1.1.0-b2.tar.gz"
  1317. DF_FIRMPATH1[$i]="http://prdownloads.sourceforge.net/rt2400/rt61-1.1.0-b2.tar.gz"
  1318. DF_FIRMPATH2[$i]="http://prdownloads.sourceforge.net/rt2400/rt61-1.1.0-b2.tar.gz"
  1319. DF_FIRMDIR[$i]="rt61-1.1.0-b2"
  1320. DF_INSTALLDIR[$i]=""
  1321. DSITE[$i]=""
  1322. DETECT_USB[$i]=""
  1323. DETECT_PCI[$i]="RT61\|RT2600\|RT2561"
  1324. DETECT_CS[$i]=""
  1325.  
  1326. i=$(($i+1))
  1327. DNAME[$i]="Ralink rt61 (rt2x00)"
  1328. DSTACK[$i]="2"
  1329. DMODINFO[$i]="^depends:.*rt2x00lib"
  1330. DMODULE[$i]="rt61pci"
  1331. DCONFIG[$i]="CONFIG_RT61PCI="
  1332. DCONFIGS[$i]="CONFIG_RT61PCI=m"
  1333. DMODULES[$i]="rt61pci"
  1334. DI_INIT[$i]=""
  1335. DI_DRIVERGET[$i]=""
  1336. DI_DRIVERFILE[$i]=""
  1337. DI_DRIVERPATH1[$i]=""
  1338. DI_DRIVERPATH2[$i]=""
  1339. DI_DRIVEREXDIR[$i]=""
  1340. DI_DRIVERDIR[$i]=""
  1341. DI_PREPATCH[$i]=""
  1342. DI_PATCHFILE[$i]=""
  1343. DI_PATCHPATH1[$i]=""
  1344. DI_PATCHPATH2[$i]=""
  1345. DI_PATCHARG[$i]=""
  1346. DI_PRECOMP[$i]=""
  1347. DI_COMPILE[$i]=""
  1348. DI_INSTALL1[$i]=""
  1349. DI_INSTALL2[$i]=""
  1350. DF_FIRMFILES[$i]="rt2561.bin rt2561s.bin rt2661.bin rt61sta.dat"
  1351. DF_FIRMFILE[$i]="rt61-1.1.0-b2.tar.gz"
  1352. DF_FIRMPATH1[$i]="http://prdownloads.sourceforge.net/rt2400/rt61-1.1.0-b2.tar.gz"
  1353. DF_FIRMPATH2[$i]="http://prdownloads.sourceforge.net/rt2400/rt61-1.1.0-b2.tar.gz"
  1354. DF_FIRMDIR[$i]="rt61-1.1.0-b2"
  1355. DF_INSTALLDIR[$i]=""
  1356. DSITE[$i]=""
  1357. DETECT_USB[$i]=""
  1358. DETECT_PCI[$i]="RT61\|RT2600\|RT2561"
  1359. DETECT_CS[$i]=""
  1360.  
  1361. i=$(($i+1))
  1362. DNAME[$i]="Ralink rt73 (legacy)"
  1363. DSTACK[$i]=""
  1364. DMODINFO[$i]=""
  1365. DMODULE[$i]="rt73"
  1366. DCONFIG[$i]=""
  1367. DCONFIGS[$i]=""
  1368. DMODULES[$i]="rt73"
  1369. DI_INIT[$i]="rm -rf rt73-k2wrlz-3.0.2/"
  1370. DI_DRIVERGET[$i]="wget"
  1371. DI_DRIVERFILE[$i]="rt73-k2wrlz-3.0.2.tar.bz2"
  1372. DI_DRIVERPATH1[$i]="http://homepages.tu-darmstadt.de/~p_larbig/wlan/rt73-k2wrlz-3.0.2.tar.bz2"
  1373. DI_DRIVERPATH2[$i]=""
  1374. DI_DRIVEREXDIR[$i]=""
  1375. DI_DRIVERDIR[$i]="rt73-k2wrlz-3.0.2/Module"
  1376. DI_PREPATCH[$i]=""
  1377. DI_PATCHFILE[$i]=""
  1378. DI_PATCHPATH1[$i]=""
  1379. DI_PATCHPATH2[$i]=""
  1380. DI_PATCHARG[$i]=""
  1381. DI_PRECOMP[$i]=""
  1382. DI_COMPILE[$i]="$MAKE"
  1383. DI_INSTALL1[$i]="$MAKE install"
  1384. DI_INSTALL2[$i]=""
  1385. DF_FIRMFILES[$i]="rt73.bin rt73sta.dat"
  1386. DF_FIRMFILE[$i]="RT73_Linux_STA_Drv1.0.4.0.tar.gz"
  1387. DF_FIRMPATH1[$i]="http://www.ralinktech.com.tw/data/RT73_Linux_STA_Drv1.0.4.0.tar.gz"
  1388. DF_FIRMPATH2[$i]=""
  1389. DF_FIRMDIR[$i]="RT73_Linux_STA_Drv1.0.4.0"
  1390. DF_INSTALLDIR[$i]=""
  1391. DSITE[$i]="http://www.aircrack-ng.org/doku.php?id=rt73"
  1392. DETECT_USB[$i]=""
  1393. DETECT_PCI[$i]=""
  1394. DETECT_CS[$i]=""
  1395.  
  1396. i=$(($i+1))
  1397. DNAME[$i]="Ralink rt73 (rt2x00)"
  1398. DSTACK[$i]="0"
  1399. DMODINFO[$i]="^depends:.*80211"
  1400. DMODULE[$i]="rt73usb"
  1401. DCONFIG[$i]="CONFIG_RT73USB="
  1402. DCONFIGS[$i]="CONFIG_RT73USB=m"
  1403. DMODULES[$i]="rt73usb"
  1404. DI_INIT[$i]=""
  1405. DI_DRIVERGET[$i]="wget"
  1406. DI_DRIVERFILE[$i]=""
  1407. DI_DRIVERPATH1[$i]=""
  1408. DI_DRIVERPATH2[$i]=""
  1409. DI_DRIVEREXDIR[$i]=""
  1410. DI_DRIVERDIR[$i]=""
  1411. DI_PREPATCH[$i]=""
  1412. DI_PATCHFILE[$i]=""
  1413. DI_PATCHPATH1[$i]=""
  1414. DI_PATCHPATH2[$i]=""
  1415. DI_PATCHARG[$i]=""
  1416. DI_PRECOMP[$i]=""
  1417. DI_COMPILE[$i]=""
  1418. DI_INSTALL1[$i]=""
  1419. DI_INSTALL2[$i]=""
  1420. DF_FIRMFILES[$i]="rt73.bin rt73sta.dat"
  1421. DF_FIRMFILE[$i]="RT73_Linux_STA_Drv1.0.4.0.tar.gz"
  1422. DF_FIRMPATH1[$i]="http://www.ralinktech.com.tw/data/RT73_Linux_STA_Drv1.0.4.0.tar.gz"
  1423. DF_FIRMPATH2[$i]=""
  1424. DF_FIRMDIR[$i]="RT73_Linux_STA_Drv1.0.4.0"
  1425. DF_INSTALLDIR[$i]=""
  1426. DSITE[$i]=""
  1427. DETECT_USB[$i]=""
  1428. DETECT_PCI[$i]=""
  1429. DETECT_CS[$i]=""
  1430.  
  1431. i=$(($i+1))
  1432. DNAME[$i]="Ralink rt73 (rt2x00)"
  1433. DSTACK[$i]="2"
  1434. DMODINFO[$i]="^depends:.*rt2x00lib"
  1435. DMODULE[$i]="rt73usb"
  1436. DCONFIG[$i]="CONFIG_RT73USB="
  1437. DCONFIGS[$i]="CONFIG_RT73USB=m"
  1438. DMODULES[$i]="rt73usb"
  1439. DI_INIT[$i]=""
  1440. DI_DRIVERGET[$i]=""
  1441. DI_DRIVERFILE[$i]=""
  1442. DI_DRIVERPATH1[$i]=""
  1443. DI_DRIVERPATH2[$i]=""
  1444. DI_DRIVEREXDIR[$i]=""
  1445. DI_DRIVERDIR[$i]=""
  1446. DI_PREPATCH[$i]=""
  1447. DI_PATCHFILE[$i]=""
  1448. DI_PATCHPATH1[$i]=""
  1449. DI_PATCHPATH2[$i]=""
  1450. DI_PATCHARG[$i]=""
  1451. DI_PRECOMP[$i]=""
  1452. DI_COMPILE[$i]=""
  1453. DI_INSTALL1[$i]=""
  1454. DI_INSTALL2[$i]=""
  1455. DF_FIRMFILES[$i]="rt73.bin rt73sta.dat"
  1456. DF_FIRMFILE[$i]="RT73_Linux_STA_Drv1.0.4.0.tar.gz"
  1457. DF_FIRMPATH1[$i]="http://www.ralinktech.com.tw/data/RT73_Linux_STA_Drv1.0.4.0.tar.gz"
  1458. DF_FIRMPATH2[$i]=""
  1459. DF_FIRMDIR[$i]="RT73_Linux_STA_Drv1.0.4.0"
  1460. DF_INSTALLDIR[$i]=""
  1461. DSITE[$i]=""
  1462. DETECT_USB[$i]=""
  1463. DETECT_PCI[$i]=""
  1464. DETECT_CS[$i]=""
  1465.  
  1466. i=$(($i+1))
  1467. DNAME[$i]="Realtek rtl8180"
  1468. DSTACK[$i]="3"
  1469. DMODINFO[$i]=""
  1470. DMODULE[$i]="r818x"
  1471. DCONFIG[$i]=""
  1472. DCONFIGS[$i]=""
  1473. DMODULES[$i]="r818x"
  1474. DI_INIT[$i]=""
  1475. DI_DRIVERGET[$i]="wget"
  1476. DI_DRIVERFILE[$i]="rtl8180-0.21.tar.gz"
  1477. DI_DRIVERPATH1[$i]="http://ovh.dl.sourceforge.net/sourceforge/rtl8180-sa2400/rtl8180-0.21.tar.gz"
  1478. DI_DRIVERPATH2[$i]=""
  1479. DI_DRIVEREXDIR[$i]=""
  1480. DI_DRIVERDIR[$i]="rtl8180-0.21"
  1481. DI_PREPATCH[$i]=""
  1482. DI_PATCHFILE[$i]="rtl8180-0.21v2.patch"
  1483. DI_PATCHPATH1[$i]="http://patches.aircrack-ng.org/rtl8180-0.21v2.patch"
  1484. DI_PATCHPATH2[$i]="http://patches.aircrack-ng.org/old/rtl8180-0.21v2.patch"
  1485. DI_PATCHARG[$i]="-p1"
  1486. DI_PRECOMP[$i]=""
  1487. DI_COMPILE[$i]="$MAKE"
  1488. DI_INSTALL1[$i]="$MAKE install"
  1489. DI_INSTALL2[$i]=""
  1490. DF_FIRMFILES[$i]=""
  1491. DF_FIRMFILE[$i]=""
  1492. DF_FIRMPATH1[$i]=""
  1493. DF_FIRMPATH2[$i]=""
  1494. DF_FIRMDIR[$i]=""
  1495. DF_INSTALLDIR[$i]=""
  1496. DSITE[$i]="http://www.aircrack-ng.org/doku.php?id=r8180-sa2400"
  1497. DETECT_USB[$i]=""
  1498. DETECT_PCI[$i]=""
  1499. DETECT_CS[$i]=""
  1500.  
  1501. i=$(($i+1))
  1502. DNAME[$i]="Realtek rtl8187"
  1503. DSTACK[$i]="3"
  1504. DMODINFO[$i]=""
  1505. DMODULE[$i]="r8187"
  1506. DCONFIG[$i]=""
  1507. DCONFIGS[$i]=""
  1508. DMODULES[$i]="r8187 ieee80211-rtl ieee80211_crypt-rtl ieee80211_crypt_wep-rtl ieee80211_crypt_tkip-rtl ieee80211_crypt_ccmp-rtl"
  1509. DI_INIT[$i]=""
  1510. DI_DRIVERGET[$i]="wget"
  1511. DI_DRIVERFILE[$i]="rtl8187_linux_26.1010.zip"
  1512. DI_DRIVERPATH1[$i]="http://dl.aircrack-ng.org/drivers/rtl8187_linux_26.1010.zip"
  1513. DI_DRIVERPATH2[$i]=""
  1514. DI_DRIVEREXDIR[$i]=""
  1515. DI_DRIVERDIR[$i]="rtl8187_linux_26.1010.0622.2006"
  1516. DI_PREPATCH[$i]="rtl8187_prepatch $i"
  1517. DI_PATCHFILE[$i]="rtl8187_2.6.27.patch"
  1518. DI_PATCHPATH1[$i]="http://patches.aircrack-ng.org/rtl8187_2.6.27.patch"
  1519. DI_PATCHPATH2[$i]=""
  1520. DI_PATCHARG[$i]="-p1"
  1521. DI_PRECOMP[$i]=""
  1522. DI_COMPILE[$i]="$MAKE"
  1523. DI_INSTALL1[$i]="$MAKE install"
  1524. DI_INSTALL2[$i]=""
  1525. DF_FIRMFILES[$i]=""
  1526. DF_FIRMFILE[$i]=""
  1527. DF_FIRMPATH1[$i]=""
  1528. DF_FIRMPATH2[$i]=""
  1529. DF_FIRMDIR[$i]=""
  1530. DF_INSTALLDIR[$i]=""
  1531. DSITE[$i]="http://www.aircrack-ng.org/doku.php?id=r8187"
  1532. DETECT_USB[$i]="RTL8187"
  1533. DETECT_PCI[$i]=""
  1534. DETECT_CS[$i]=""
  1535.  
  1536. i=$(($i+1))
  1537. DNAME[$i]="Realtek rtl8187"
  1538. DSTACK[$i]="2"
  1539. DMODINFO[$i]=""
  1540. DMODULE[$i]="rtl8187"
  1541. DCONFIG[$i]=""
  1542. DCONFIGS[$i]=""
  1543. DMODULES[$i]="rtl8187"
  1544. DI_INIT[$i]=""
  1545. DI_DRIVERGET[$i]=""
  1546. DI_DRIVERFILE[$i]=""
  1547. DI_DRIVERPATH1[$i]=""
  1548. DI_DRIVERPATH2[$i]=""
  1549. DI_DRIVEREXDIR[$i]=""
  1550. DI_DRIVERDIR[$i]=""
  1551. DI_PREPATCH[$i]=""
  1552. DI_PATCHFILE[$i]=""
  1553. DI_PATCHPATH1[$i]=""
  1554. DI_PATCHPATH2[$i]=""
  1555. DI_PATCHARG[$i]=""
  1556. DI_PRECOMP[$i]=""
  1557. DI_COMPILE[$i]=""
  1558. DI_INSTALL1[$i]=""
  1559. DI_INSTALL2[$i]=""
  1560. DF_FIRMFILES[$i]=""
  1561. DF_FIRMFILE[$i]=""
  1562. DF_FIRMPATH1[$i]=""
  1563. DF_FIRMPATH2[$i]=""
  1564. DF_FIRMDIR[$i]=""
  1565. DF_INSTALLDIR[$i]=""
  1566. DSITE[$i]=""
  1567. DETECT_USB[$i]="RTL8187"
  1568. DETECT_PCI[$i]=""
  1569. DETECT_CS[$i]=""
  1570.  
  1571. i=$(($i+1))
  1572. DNAME[$i]="WLAN-NG"
  1573. DSTACK[$i]="0"
  1574. DMODINFO[$i]=""
  1575. DMODULE[$i]="prism2_pci"
  1576. DCONFIG[$i]=""
  1577. DCONFIGS[$i]=""
  1578. DMODULES[$i]="prism2_pci prism2_usb prism2_plx prism2_cs p80211"
  1579. DI_INIT[$i]=""
  1580. DI_DRIVERGET[$i]="wget"
  1581. DI_DRIVERFILE[$i]="linux-wlan-ng-0.2.8.tar.bz2"
  1582. DI_DRIVERPATH1[$i]="ftp://ftp.linux-wlan.org/pub/linux-wlan-ng/linux-wlan-ng-0.2.8.tar.bz2"
  1583. DI_DRIVERPATH2[$i]=""
  1584. DI_DRIVEREXDIR[$i]=""
  1585. DI_DRIVERDIR[$i]="linux-wlan-ng-0.2.8"
  1586. DI_PREPATCH[$i]=""
  1587. DI_PATCHFILE[$i]="linux-wlan-ng-0.2.8.patch"
  1588. DI_PATCHPATH1[$i]="http://patches.aircrack-ng.org/linux-wlan-ng-0.2.8.patch"
  1589. DI_PATCHPATH2[$i]="http://patches.aircrack-ng.org/old/linux-wlan-ng-0.2.8.patch"
  1590. DI_PATCHARG[$i]="-p1"
  1591. DI_PRECOMP[$i]=""
  1592. DI_COMPILE[$i]="$MAKE auto_config"
  1593. DI_INSTALL1[$i]="$MAKE install"
  1594. DI_INSTALL2[$i]=""
  1595. DF_FIRMFILES[$i]=""
  1596. DF_FIRMFILE[$i]=""
  1597. DF_FIRMPATH1[$i]=""
  1598. DF_FIRMPATH2[$i]=""
  1599. DF_FIRMDIR[$i]=""
  1600. DF_INSTALLDIR[$i]=""
  1601. DSITE[$i]="http://www.aircrack-ng.org/doku.php?id=wlan-ng"
  1602. DETECT_USB[$i]=""
  1603. DETECT_PCI[$i]=""
  1604. DETECT_CS[$i]=""
  1605.  
  1606. i=$(($i+1))
  1607. DNAME[$i]="Xircom Creditcard Netwave"
  1608. DSTACK[$i]="0"
  1609. DMODINFO[$i]=""
  1610. DMODULE[$i]="netwave_cs"
  1611. DCONFIG[$i]="CONFIG_PCMCIA_NETWAVE="
  1612. DCONFIGS[$i]="CONFIG_PCMCIA_NETWAVE=m"
  1613. DMODULES[$i]="netwave_cs"
  1614. DI_INIT[$i]=""
  1615. DI_DRIVERGET[$i]=""
  1616. DI_DRIVERFILE[$i]=""
  1617. DI_DRIVERPATH1[$i]=""
  1618. DI_DRIVERPATH2[$i]=""
  1619. DI_DRIVEREXDIR[$i]=""
  1620. DI_DRIVERDIR[$i]=""
  1621. DI_PREPATCH[$i]=""
  1622. DI_PATCHFILE[$i]=""
  1623. DI_PATCHPATH1[$i]=""
  1624. DI_PATCHPATH2[$i]=""
  1625. DI_PATCHARG[$i]=""
  1626. DI_PRECOMP[$i]=""
  1627. DI_COMPILE[$i]=""
  1628. DI_INSTALL1[$i]=""
  1629. DI_INSTALL2[$i]=""
  1630. DF_FIRMFILES[$i]=""
  1631. DF_FIRMFILE[$i]=""
  1632. DF_FIRMPATH1[$i]=""
  1633. DF_FIRMPATH2[$i]=""
  1634. DF_FIRMDIR[$i]=""
  1635. DF_INSTALLDIR[$i]=""
  1636. DSITE[$i]=""
  1637. DETECT_USB[$i]=""
  1638. DETECT_PCI[$i]=""
  1639. DETECT_CS[$i]=""
  1640.  
  1641. i=$(($i+1))
  1642. DNAME[$i]="ZyDAS 1201"
  1643. DSTACK[$i]="1"
  1644. DMODINFO[$i]=""
  1645. DMODULE[$i]="zd1201"
  1646. DCONFIG[$i]="CONFIG_USB_ZD1201="
  1647. DCONFIGS[$i]="CONFIG_USB_ZD1201=m"
  1648. DMODULES[$i]="zd1201"
  1649. DI_INIT[$i]=""
  1650. DI_DRIVERGET[$i]=""
  1651. DI_DRIVERFILE[$i]=""
  1652. DI_DRIVERPATH1[$i]=""
  1653. DI_DRIVERPATH2[$i]=""
  1654. DI_DRIVEREXDIR[$i]=""
  1655. DI_DRIVERDIR[$i]=""
  1656. DI_PREPATCH[$i]=""
  1657. DI_PATCHFILE[$i]=""
  1658. DI_PATCHPATH1[$i]=""
  1659. DI_PATCHPATH2[$i]=""
  1660. DI_PATCHARG[$i]=""
  1661. DI_PRECOMP[$i]=""
  1662. DI_COMPILE[$i]=""
  1663. DI_INSTALL1[$i]=""
  1664. DI_INSTALL2[$i]=""
  1665. DF_FIRMFILES[$i]="zd1201.fw zd1201-ap.fw"
  1666. DF_FIRMFILE[$i]="zd1201-0.14-fw.tar.gz"
  1667. DF_FIRMPATH1[$i]="http://downloads.sourceforge.net/linux-lc100020/zd1201-0.14-fw.tar.gz"
  1668. DF_FIRMPATH2[$i]="http://downloads.sourceforge.net/linux-lc100020/zd1201-0.14-fw.tar.gz"
  1669. DF_FIRMDIR[$i]="zd1201-0.14-fw"
  1670. DF_INSTALLDIR[$i]=""
  1671. DSITE[$i]=""
  1672. DETECT_USB[$i]=""
  1673. DETECT_PCI[$i]=""
  1674. DETECT_CS[$i]=""
  1675.  
  1676. i=$(($i+1))
  1677. DNAME[$i]="ZyDAS 1211"
  1678. DSTACK[$i]="1"
  1679. DMODINFO[$i]=""
  1680. DMODULE[$i]="zd1211"
  1681. DCONFIG[$i]=""
  1682. DCONFIGS[$i]=""
  1683. DMODULES[$i]="zd1211"
  1684. DI_INIT[$i]=""
  1685. DI_DRIVERGET[$i]=""
  1686. DI_DRIVERFILE[$i]=""
  1687. DI_DRIVERPATH1[$i]=""
  1688. DI_DRIVERPATH2[$i]=""
  1689. DI_DRIVEREXDIR[$i]=""
  1690. DI_DRIVERDIR[$i]=""
  1691. DI_PREPATCH[$i]=""
  1692. DI_PATCHFILE[$i]=""
  1693. DI_PATCHPATH1[$i]=""
  1694. DI_PATCHPATH2[$i]=""
  1695. DI_PATCHARG[$i]=""
  1696. DI_PRECOMP[$i]=""
  1697. DI_COMPILE[$i]=""
  1698. DI_INSTALL1[$i]=""
  1699. DI_INSTALL2[$i]=""
  1700. DF_FIRMFILES[$i]="zd1211b_ub zd1211b_uphm zd1211b_ur zd1211_uph zd1211_uphr zd1211b_uph zd1211b_uphr zd1211_ub zd1211_uphm zd1211_ur"
  1701. DF_FIRMFILE[$i]="zd1211-firmware-1.4.tar.bz2"
  1702. DF_FIRMPATH1[$i]="http://downloads.sourceforge.net/zd1211/zd1211-firmware-1.4.tar.bz2"
  1703. DF_FIRMPATH2[$i]="http://downloads.sourceforge.net/zd1211/zd1211-firmware-1.4.tar.bz2"
  1704. DF_FIRMDIR[$i]="zd1211-firmware"
  1705. DF_INSTALLDIR[$i]="zd1211"
  1706. DSITE[$i]=""
  1707. DETECT_USB[$i]=""
  1708. DETECT_PCI[$i]=""
  1709. DETECT_CS[$i]=""
  1710.  
  1711. i=$(($i+1))
  1712. DNAME[$i]="ZyDAS 1211rw"
  1713. DSTACK[$i]="1"
  1714. DMODINFO[$i]=""
  1715. DMODULE[$i]="zd1211rw"
  1716. DCONFIG[$i]="CONFIG_ZD1211RW="
  1717. DCONFIGS[$i]="CONFIG_ZD1211RW=m"
  1718. DMODULES[$i]="zd1211rw"
  1719. DI_INIT[$i]="install_zd1211rw $i"
  1720. DI_DRIVERGET[$i]="wget"
  1721. DI_DRIVERFILE[$i]="linux-$VANILLA.tar.bz2"
  1722. DI_DRIVERPATH1[$i]="ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-$VANILLA.tar.bz2"
  1723. DI_DRIVERPATH2[$i]="ftp://ftp.de.kernel.org/pub/linux/kernel/v2.6/linux-$VANILLA.tar.bz2"
  1724. DI_DRIVEREXDIR[$i]="linux-$VANILLA/drivers/net/wireless/zd1211rw"
  1725. DI_DRIVERDIR[$i]="zd1211rw"
  1726. DI_PREPATCH[$i]=""
  1727. DI_PATCHFILE[$i]="zd1211rw_inject_2.6.23.patch"
  1728. DI_PATCHPATH1[$i]="http://patches.aircrack-ng.org/zd1211rw_inject_2.6.23.patch"
  1729. DI_PATCHPATH2[$i]="http://patches.aircrack-ng.org/old/zd1211rw_inject_2.6.23.patch"
  1730. DI_PATCHARG[$i]="-p5"
  1731. DI_PRECOMP[$i]=""
  1732. DI_COMPILE[$i]="$MAKE -C $KSRC/ M=$D_DIR/${DI_DRIVERDIR[$i]} modules"
  1733. DI_INSTALL1[$i]="mkdir -p "$KMOD/kernel/drivers/net/wireless/zd1211rw/""
  1734. DI_INSTALL2[$i]="cp -f zd1211rw.ko $KMOD/kernel/drivers/net/wireless/zd1211rw/"
  1735. DF_FIRMFILES[$i]="zd1211b_ub zd1211b_uphm zd1211b_ur zd1211_uph zd1211_uphr zd1211b_uph zd1211b_uphr zd1211_ub zd1211_uphm zd1211_ur"
  1736. DF_FIRMFILE[$i]="zd1211-firmware-1.4.tar.bz2"
  1737. DF_FIRMPATH1[$i]="http://downloads.sourceforge.net/zd1211/zd1211-firmware-1.4.tar.bz2"
  1738. DF_FIRMPATH2[$i]="http://downloads.sourceforge.net/zd1211/zd1211-firmware-1.4.tar.bz2"
  1739. DF_FIRMDIR[$i]="zd1211-firmware"
  1740. DF_INSTALLDIR[$i]="zd1211"
  1741. DSITE[$i]="http://www.aircrack-ng.org/doku.php?id=zd1211rw"
  1742. DETECT_USB[$i]=""
  1743. DETECT_PCI[$i]=""
  1744. DETECT_CS[$i]=""
  1745.  
  1746. i=$(($i+1))
  1747. DNAME[$i]="ZyDAS 1211rw"
  1748. DSTACK[$i]="2"
  1749. DMODINFO[$i]=""
  1750. DMODULE[$i]="zd1211rw_mac80211"
  1751. DCONFIG[$i]="CONFIG_ZD1211RW_MAC80211="
  1752. DCONFIGS[$i]="CONFIG_ZD1211RW_MAC80211=m"
  1753. DMODULES[$i]="zd1211rw_mac80211"
  1754. DI_INIT[$i]=""
  1755. DI_DRIVERGET[$i]=""
  1756. DI_DRIVERFILE[$i]=""
  1757. DI_DRIVERPATH1[$i]=""
  1758. DI_DRIVERPATH2[$i]=""
  1759. DI_DRIVEREXDIR[$i]=""
  1760. DI_DRIVERDIR[$i]=""
  1761. DI_PREPATCH[$i]=""
  1762. DI_PATCHFILE[$i]=""
  1763. DI_PATCHPATH1[$i]=""
  1764. DI_PATCHPATH2[$i]=""
  1765. DI_PATCHARG[$i]=""
  1766. DI_PRECOMP[$i]=""
  1767. DI_COMPILE[$i]=""
  1768. DI_INSTALL1[$i]=""
  1769. DI_INSTALL2[$i]=""
  1770. DF_FIRMFILES[$i]=""
  1771. DF_FIRMFILE[$i]=""
  1772. DF_FIRMPATH1[$i]=""
  1773. DF_FIRMPATH2[$i]=""
  1774. DF_FIRMDIR[$i]=""
  1775. DF_INSTALLDIR[$i]=""
  1776. DSITE[$i]="http://www.aircrack-ng.org/doku.php?id=zd1211rw"
  1777. DETECT_USB[$i]=""
  1778. DETECT_PCI[$i]=""
  1779. DETECT_CS[$i]=""
  1780.  
  1781. i=$(($i+1))
  1782. DNAME[$i]="NDIS Wrapper"
  1783. DSTACK[$i]=""
  1784. DMODINFO[$i]=""
  1785. DMODULE[$i]="ndiswrapper"
  1786. DCONFIG[$i]=""
  1787. DCONFIGS[$i]=""
  1788. DMODULES[$i]="ndiswrapper"
  1789. DI_INIT[$i]=""
  1790. DI_DRIVERGET[$i]="wget"
  1791. DI_DRIVERFILE[$i]="ndiswrapper-1.49.tar.gz"
  1792. DI_DRIVERPATH1[$i]="http://heanet.dl.sourceforge.net/sourceforge/ndiswrapper/ndiswrapper-1.49.tar.gz"
  1793. DI_DRIVERPATH2[$i]="http://internap.dl.sourceforge.net/sourceforge/ndiswrapper/ndiswrapper-1.49.tar.gz"
  1794. DI_DRIVEREXDIR[$i]=""
  1795. DI_DRIVERDIR[$i]="ndiswrapper-1.49"
  1796. DI_PREPATCH[$i]=""
  1797. DI_PATCHFILE[$i]=""
  1798. DI_PATCHPATH1[$i]=""
  1799. DI_PATCHPATH2[$i]=""
  1800. DI_PATCHARG[$i]=""
  1801. DI_PRECOMP[$i]=""
  1802. DI_COMPILE[$i]="make"
  1803. DI_INSTALL1[$i]="make install"
  1804. DI_INSTALL2[$i]=""
  1805. DF_FIRMFILES[$i]=""
  1806. DF_FIRMFILE[$i]=""
  1807. DF_FIRMPATH1[$i]=""
  1808. DF_FIRMPATH2[$i]=""
  1809. DF_FIRMDIR[$i]=""
  1810. DF_INSTALLDIR[$i]=""
  1811. DSITE[$i]="http://ndiswrapper.sourceforge.net"
  1812. DETECT_USB[$i]=""
  1813. DETECT_PCI[$i]=""
  1814. DETECT_CS[$i]=""
  1815.  
  1816. #END drivers
  1817. DCOUNT=$(($i+1))
  1818.  
  1819. #init install scripts
  1820. install_hostap() {
  1821.     if [ $KMINOR -eq 6 -a $KPATCH -lt 16 ]
  1822.     then
  1823.         #use external driver 0.4.7
  1824.         DI_DRIVERFILE[$1]="hostap-driver-0.4.9.tar.gz"
  1825.         DI_DRIVERPATH1[$1]="http://hostap.epitest.fi/releases/hostap-driver-0.4.9.tar.gz"
  1826.         DI_DRIVERPATH2[$1]=""
  1827.         DI_DRIVEREXDIR[$1]=""
  1828.         DI_DRIVERDIR[$1]="hostap-driver-0.4.9"
  1829.         DI_PATCHFILE[$1]="hostap-driver-0.4.9.patch"
  1830.         DI_PATCHPATH1[$1]="http://patches.aircrack-ng.org/hostap-driver-0.4.9.patch"
  1831.         DI_PATCHPATH2[$1]="http://patches.aircrack-ng.org/old/hostap-driver-0.4.9.patch"
  1832.         DI_PATCHARG[$1]="-p1"
  1833.         DI_COMPILE[$1]="$MAKE"
  1834.         DI_INSTALL1[$1]="$MAKE install"
  1835.     fi
  1836.  
  1837.     if [ $KMINOR -eq 6 -a $KPATCH -gt 18 ]
  1838.     then
  1839.         DI_PATCHFILE[$1]="hostap-kernel-2.6.18.patch"
  1840.         DI_PATCHPATH1[$1]="http://patches.aircrack-ng.org/hostap-kernel-2.6.18.patch"
  1841.         DI_PATCHPATH2[$1]="http://patches.aircrack-ng.org/old/hostap-kernel-2.6.18.patch"
  1842.     fi
  1843. }
  1844.  
  1845. install_hermes() {
  1846.     if [ $KMINOR -eq 4 ]
  1847.     then
  1848.         DI_DRIVERFILE[$1]="orinoco-0.13e-SN-3.tar.bz2"
  1849.         DI_DRIVERPATH1[$1]="http://www.projectiwear.org/~plasmahh/orinoco-0.13e-SN-3.tar.bz2"
  1850.         DI_DRIVERPATH2[$1]=""
  1851.         DI_DRIVERDIR[$1]="orinoco-0.13e-SN-3"
  1852.     fi
  1853.  
  1854.     if [ $KMINOR -eq 6 -a $KPATCH -le 7 ]
  1855.     then
  1856.         DI_DRIVERFILE[$1]="orinoco-0.13e-SN-5.tar.bz2"
  1857.         DI_DRIVERPATH1[$1]="http://www.projectiwear.org/~plasmahh/orinoco-0.13e-SN-5.tar.bz2"
  1858.         DI_DRIVERPATH2[$1]=""
  1859.         DI_DRIVERDIR[$1]="orinoco-0.13e-SN-5"
  1860.     fi
  1861.  
  1862.     if [ $KMINOR -eq 6 -a $KPATCH -ge 8 -a $KPATCH -le 10 ]
  1863.     then
  1864.         DI_DRIVERFILE[$1]="orinoco-0.13e-SN-7.tar.bz2"
  1865.         DI_DRIVERPATH1[$1]="http://www.projectiwear.org/~plasmahh/orinoco-0.13e-SN-7.tar.bz2"
  1866.         DI_DRIVERPATH2[$1]=""
  1867.         DI_DRIVERDIR[$1]="orinoco-0.13e-SN-7"
  1868.     fi
  1869.  
  1870.     if [ $KMINOR -eq 6 -a $KPATCH -ge 11 -a $KPATCH -le 12 ]
  1871.     then
  1872.         DI_DRIVERFILE[$1]="orinoco-0.13e-SN-8.tar.bz2"
  1873.         DI_DRIVERPATH1[$1]="http://www.projectiwear.org/~plasmahh/orinoco-0.13e-SN-8.tar.bz2"
  1874.         DI_DRIVERPATH2[$1]=""
  1875.         DI_DRIVERDIR[$1]="orinoco-0.13e-SN-8"
  1876.     fi
  1877.  
  1878.     if [ $KMINOR -eq 6 -a $KPATCH -ge 13 -a $KPATCH -le 14 ]
  1879.     then
  1880.         DI_DRIVERFILE[$1]="orinoco-0.13e-SN-9.tar.bz2"
  1881.         DI_DRIVERPATH1[$1]="http://www.projectiwear.org/~plasmahh/orinoco-0.13e-SN-9.tar.bz2"
  1882.         DI_DRIVERPATH2[$1]=""
  1883.         DI_DRIVERDIR[$1]="orinoco-0.13e-SN-9"
  1884.     fi
  1885.  
  1886.     if [ $KMINOR -eq 6 -a $KPATCH -ge 18 -a $KPATCH -le 19 ]
  1887.     then
  1888.         DI_DRIVERFILE[$1]="orinoco-0.13e-SN-15.tar.bz2"
  1889.         DI_DRIVERPATH1[$1]="http://www.projectiwear.org/~plasmahh/orinoco-0.13e-SN-15.tar.bz2"
  1890.         DI_DRIVERPATH2[$1]=""
  1891.         DI_DRIVERDIR[$1]="orinoco-0.13e-SN-15"
  1892.     fi
  1893.  
  1894.     if [ $KMINOR -eq 6 -a $KPATCH -ge 20 -a $KPATCH -le 25 ]
  1895.     then
  1896.         DI_DRIVERFILE[$1]="orinoco-0.13e-SN-16.tar.bz2"
  1897.         DI_DRIVERPATH1[$1]="http://www.projectiwear.org/~plasmahh/orinoco-0.13e-SN-16.tar.bz2"
  1898.         DI_DRIVERPATH2[$1]=""
  1899.         DI_DRIVERDIR[$1]="orinoco-0.13e-SN-16"
  1900.     fi
  1901. }
  1902.  
  1903. install_ipw2200() {
  1904.     if [ $KMINOR -eq 6 -a $KPATCH -lt 15 ]
  1905.     then
  1906.         DI_DRIVERFILE[$1]="ipw2200-1.1.4.tgz"
  1907.         DI_DRIVERPATH1[$1]="http://prdownloads.sourceforge.net/ipw2200/ipw2200-1.1.4.tgz?download"
  1908.         DI_DRIVERPATH2[$1]="http://prdownloads.sourceforge.net/ipw2200/ipw2200-1.1.4.tgz?download"
  1909.         DI_DRIVEREXDIR[$1]=""
  1910.         DI_DRIVERDIR[$1]="ipw2200-1.1.4"
  1911.         DI_PRECOMP[$1]=""
  1912.         DI_COMPILE[$1]="$MAKE -C $KSRC/ M=$D_DIR/${DI_DRIVERDIR[2]} modules"
  1913.         DI_INSTALL1[$1]="mkdir -p "$KMOD/kernel/drivers/net/wireless/ipw2200/""
  1914.         DI_INSTALL2[$1]="cp -f ipw2200.ko $KMOD/kernel/drivers/net/wireless/ipw2200/"
  1915.     fi
  1916. }
  1917.  
  1918. install_zd1211rw() {
  1919.     if [ $KMINOR -eq 6 -a $KPATCH -lt 18 ]
  1920.     then
  1921.         DI_DRIVERFILE[$1]="linux-2.6.18.tar.bz2"
  1922.         DI_DRIVERPATH1[$1]="ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.tar.bz2"
  1923.         DI_DRIVERPATH2[$1]="ftp://ftp.de.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.tar.bz2"
  1924.         DI_DRIVEREXDIR[$1]="linux-2.6.18/drivers/net/wireless/zd1211rw"
  1925.     fi
  1926.  
  1927.     if [ $KMINOR -eq 6 -a $KPATCH -eq 20 ]
  1928.     then
  1929.         DI_PATCHFILE[$1]="zd1211rw_inject_2.6.20.patch"
  1930.         DI_PATCHPATH1[$1]="http://patches.aircrack-ng.org/zd1211rw_inject_2.6.20.patch"
  1931.         DI_PATCHPATH2[$1]="http://patches.aircrack-ng.org/old/zd1211rw_inject_2.6.20.patch"
  1932.     fi
  1933.  
  1934.     if [ $KMINOR -eq 6 -a $KPATCH -eq 21 ]
  1935.     then
  1936.         DI_PATCHFILE[$1]="zd1211rw_inject_2.6.21-gentoo.patch"
  1937.         DI_PATCHPATH1[$1]="http://patches.aircrack-ng.org/zd1211rw_inject_2.6.21-gentoo.patch"
  1938.         DI_PATCHPATH2[$1]="http://patches.aircrack-ng.org/old/zd1211rw_inject_2.6.21-gentoo.patch"
  1939.     fi
  1940.  
  1941.     if [ $KMINOR -eq 6 -a $KPATCH -ge 22 ]
  1942.     then
  1943.         DI_PATCHFILE[$1]="zd1211rw_inject_2.6.22.patch"
  1944.         DI_PATCHPATH1[$1]="http://patches.aircrack-ng.org/zd1211rw_inject_2.6.22.patch"
  1945.         DI_PATCHPATH2[$1]="http://patches.aircrack-ng.org/old/zd1211rw_inject_2.6.22.patch"
  1946.     fi
  1947. }
  1948.  
  1949. madwifi_install() {
  1950.     echo i | $MAKE install
  1951. }
  1952.  
  1953. ipw2100_precomp() {
  1954.     echo 'obj-$(CONFIG_IPW2100) += ipw2100.o' > Makefile
  1955. }
  1956.  
  1957. ipw2200_precomp() {
  1958.     echo 'obj-$(CONFIG_IPW2200) += ipw2200.o' > Makefile
  1959. }
  1960.  
  1961. rtl8187_prepatch() {
  1962.     $TAR xzf stack.tar.gz
  1963.     $TAR xzf drv.tar.gz
  1964. }
  1965.  
  1966. install_ieee80211() {
  1967.     #use old patch for kernel < 2.6.22
  1968.     if [ $KMINOR -eq 6 -a $KPATCH -lt 22 ]
  1969.     then
  1970.         SI_PATCHFILE[$1]="ieee80211_inject.patch"
  1971.         SI_PATCHPATH1[$1]="http://patches.aircrack-ng.org/ieee80211_inject.patch"
  1972.         SI_PATCHPATH2[$1]="http://patches.aircrack-ng.org/old/ieee80211_inject.patch"
  1973.     fi
  1974.  
  1975.     if [ $2 -eq 1 ]
  1976.     then
  1977.         #check if kernel source is in /usr/src/linux instead
  1978.         missing=0
  1979.         #check for default files README COPYING CREDITS (i hope every kernel source includes them all)
  1980.         if [ ! -f "/usr/src/linux/README" -o ! -f "/usr/src/linux/COPYING" -o ! -f "/usr/src/linux/CREDITS" ]
  1981.         then
  1982.             missing=1
  1983.         #   echo "Kernel source missing!"
  1984. #            return $ERROR
  1985.         fi
  1986.  
  1987.         #2nd check (in case README COPYING and CREDITS is included in kernel headers)
  1988.         #searches for .c files in "net" subdir
  1989.         if [ $missing = 0 -a x"`find "/usr/src/linux/net/" -name "*\.c" | head -n 1`" = x ]
  1990.         then
  1991.             missing=1
  1992.         #   echo "Kernel source missing!"
  1993. #            return $ERROR
  1994.         fi
  1995.  
  1996.         if [ $missing = 0 ]
  1997.         then
  1998.             SI_DRIVERPATH1[$1]=$SI_DRIVERPATH2[$1]
  1999.         else
  2000.             echo
  2001.             echo "Your kernel source is neither in \"$KSRC\" nor in \"/usr/src/linux\"."
  2002.             echo "Trying with vanilla source. (May fail on heavily patched distributions.)"
  2003.             echo "If it fails install your proper kernel source and rerun this script."
  2004.             echo
  2005.             sleep 3
  2006.  
  2007.             SI_DRIVERGET[$1]="wget"
  2008.             SI_DRIVERFILE[$1]="linux-$VANILLA.tar.bz2"
  2009.             SI_DRIVERPATH1[$1]="ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-$VANILLA.tar.bz2"
  2010.             SI_DRIVERPATH2[$1]="ftp://ftp.de.kernel.org/pub/linux/kernel/v2.6/linux-$VANILLA.tar.bz2"
  2011.             SI_DRIVEREXDIR[$1]="linux-$VANILLA/net/ieee80211"
  2012.             SI_DRIVERDIR[$1]="ieee80211"
  2013.         fi
  2014.     fi
  2015. }
  2016.  
  2017. install_softmac() {
  2018.     #use no patch for kernel < 2.6.19
  2019.     if [ $KMINOR -eq 6 -a $KPATCH -lt 19 ]
  2020.     then
  2021.         SI_PATCHFILE[$1]=""
  2022.         SI_PATCHPATH1[$1]=""
  2023.         SI_PATCHPATH2[$1]=""
  2024.         SI_PATCHARG[$1]=""
  2025.     fi
  2026.  
  2027.     if [ $2 -eq 1 ]
  2028.     then
  2029.         #check if kernel source is in /usr/src/linux instead
  2030.         missing=0
  2031.         #check for default files README COPYING CREDITS (i hope every kernel source includes them all)
  2032.         if [ ! -f "/usr/src/linux/README" -o ! -f "/usr/src/linux/COPYING" -o ! -f "/usr/src/linux/CREDITS" ]
  2033.         then
  2034.             missing=1
  2035.         #   echo "Kernel source missing!"
  2036. #            return $ERROR
  2037.         fi
  2038.  
  2039.         #2nd check (in case README COPYING and CREDITS is included in kernel headers)
  2040.         #searches for .c files in "net" subdir
  2041.         if [ $missing = 0 -a x"`find "/usr/src/linux/net/" -name "*\.c" | head -n 1`" = x ]
  2042.         then
  2043.             missing=1
  2044.         #   echo "Kernel source missing!"
  2045. #            return $ERROR
  2046.         fi
  2047.  
  2048.         if [ $missing = 0 ]
  2049.         then
  2050.             SI_DRIVERPATH1[$1]=$SI_DRIVERPATH2[$1]
  2051.         else
  2052.             echo
  2053.             echo "Your kernel source is neither in \"$KSRC\" nor in \"/usr/src/linux\"."
  2054.             echo "Trying with vanilla source. (May fail on heavily patched distributions.)"
  2055.             echo "If it fails install your proper kernel source and rerun this script."
  2056.             echo
  2057.             sleep 3
  2058.  
  2059.             SI_DRIVERGET[$1]="wget"
  2060.             SI_DRIVERFILE[$1]="linux-$VANILLA.tar.bz2"
  2061.             SI_DRIVERPATH1[$1]="ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-$VANILLA.tar.bz2"
  2062.             SI_DRIVERPATH2[$1]="ftp://ftp.de.kernel.org/pub/linux/kernel/v2.6/linux-$VANILLA.tar.bz2"
  2063.             SI_DRIVEREXDIR[$1]="linux-$VANILLA/net/ieee80211/softmac"
  2064.             SI_DRIVERDIR[$1]="softmac"
  2065.         fi
  2066.     fi
  2067. }
  2068. #end
  2069.  
  2070. #install script doing the dirty work
  2071. #you're already in the correct dir
  2072. #old modules are unloaded
  2073. # 5 steps: get the source, get the patch, patch, compile, install
  2074. install_action() {
  2075. #write some info into log file
  2076.     echo "`date`" >> "$LOGFILE" 2>&1
  2077.     echo "Installing \"${DNAME[$1]}\" on $KVER." >> "$LOGFILE" 2>&1
  2078. #0 - check if all needed variables are set
  2079.     if [ x"${DI_DRIVERFILE[$1]}" == x -a x"${DI_DRIVERGET[$1]}" == "wget" ]
  2080.     then
  2081.         echo "DI_DRIVERFILE[$1] isn't set!"
  2082.         return $ERROR
  2083.     fi
  2084.  
  2085.     if [ x"${DI_DRIVERPATH1[$1]}" == x ]
  2086.     then
  2087.         echo "DI_DRIVERPATH1[$1] isn't set, you need at least one driver source!"
  2088.         return $ERROR
  2089.     fi
  2090.  
  2091.     if [ x"${DI_DRIVERDIR[$1]}" == x ]
  2092.     then
  2093.         echo "DI_DRIVERDIR[$1] isn't set!"
  2094.         return $ERROR
  2095.     fi
  2096.  
  2097.     if [ x"${DI_COMPILE[$1]}" == x ]
  2098.     then
  2099.         echo "DI_COMPILE[$1] isn't set!"
  2100.         return $ERROR
  2101.     fi
  2102.  
  2103.     if [ x"${DI_INSTALL1[$1]}" == x ]
  2104.     then
  2105.         echo "DI_INSTALL1[$1] isn't set!"
  2106.         return $ERROR
  2107.     fi
  2108.  
  2109.     if [ x"${DI_DRIVERGET[$1]}" == x ]
  2110.     then
  2111.         echo "DI_DRIVERGET[$1] isn't set!"
  2112.         return $ERROR
  2113.     fi
  2114.  
  2115.     if [ "${DI_DRIVERGET[$1]}" == "wget" -a x"$WGET" == x ]
  2116.     then
  2117.         echo "You need to install \"wget\" prior to installing ${DNAME[$1]}"
  2118.     fi
  2119.  
  2120.     if [ "${DI_DRIVERGET[$1]}" == "svn" -a x"$SVN" == x ]
  2121.     then
  2122.         echo "You need to install \"subversion\" prior to installing ${DNAME[$1]}"
  2123.     fi
  2124.  
  2125.     if [ "${DI_DRIVERGET[$1]}" == "cvs" -a x"$CVS" == x ]
  2126.     then
  2127.         echo "You need to install \"cvs\" prior to installing ${DNAME[$1]}"
  2128.     fi
  2129.  
  2130.     if [ "${DI_DRIVERGET[$1]}" == "git" -a x"$GIT" == x ]
  2131.     then
  2132.         echo "You need to install \"git\" prior to installing ${DNAME[$1]}"
  2133.     fi
  2134. #1 - get then correct source
  2135.     printf "1. Getting the source..."
  2136.  
  2137.     #get it with wget
  2138.     if [ "${DI_DRIVERGET[$1]}" == "wget"  ]
  2139.     then
  2140.         #is compressed source available? no - wget it
  2141.         if [ ! -f "${DI_DRIVERFILE[$1]}" ]
  2142.         then
  2143.             $WGET --progress=dot:mega -O "${DI_DRIVERFILE[$1]}" "${DI_DRIVERPATH1[$1]}" >> "$LOGFILE" 2>&1
  2144.             if [ "$?" != "0" ]
  2145.             then
  2146.                 rm "${DI_DRIVERFILE[$1]}" 2>/dev/null
  2147.             fi
  2148.         fi
  2149.  
  2150.         #is compressed source available? no - wget it from mirror
  2151.         if [ ! -f "${DI_DRIVERFILE[$1]}" -a x"${DI_DRIVERPATH2[$1]}" != x ]
  2152.         then
  2153.             $WGET --progress=dot:mega -O "${DI_DRIVERFILE[$1]}" "${DI_DRIVERPATH2[$1]}" >> "$LOGFILE" 2>&1
  2154.             if [ "$?" != "0" ]
  2155.             then
  2156.                 rm "${DI_DRIVERFILE[$1]}" 2>/dev/null
  2157.             fi
  2158.         fi
  2159.  
  2160.         #is compressed source available? no - try to locate it
  2161.         if [ ! -f "${DI_DRIVERFILE[$1]}" ]
  2162.         then
  2163.             cp "`locate "${DI_DRIVERFILE[$1]}" | grep "${DI_DRIVERFILE[$1]}$" | head -n 1`" ./ >> "$LOGFILE" 2>&1
  2164.             if [ "$?" != "0" ]
  2165.             then
  2166.                 rm "${DI_DRIVERFILE[$1]}" 2>/dev/null
  2167.             fi
  2168.         fi
  2169.  
  2170.         #is compressed source available? no - abort install
  2171.         if [ ! -f "${DI_DRIVERFILE[$1]}" ]
  2172.         then
  2173.             echo "Couldn't find the correct driver file: ${DI_DRIVERFILE[$1]}"
  2174.             echo "The specified source seems to be down:"
  2175.             echo "${DI_DRIVERPATH1[$1]}"
  2176.             if [ x"${DI_DRIVERPATH2[$1]}" != x ]
  2177.             then
  2178.                 echo "${DI_DRIVERPATH2[$1]}"
  2179.             fi
  2180.             echo "Get the file by hand, put it in \"$D_DIR/\""
  2181.             echo "and restart this installation."
  2182.             return $NO
  2183.         else
  2184.             printf "OK\n";
  2185.         fi
  2186.  
  2187.         printf "2. Extracting the source..."
  2188.         if [ -d "${DI_DRIVERDIR[$1]}" ]
  2189.         then
  2190.             #be carefull!! (deleting old source)
  2191.             rm -rf "${DI_DRIVERDIR[$1]}" >> "$LOGFILE" 2>&1
  2192.         fi
  2193.  
  2194.         if [ x"${DI_DRIVEREXDIR[$1]}" != x ]
  2195.         then
  2196.             #is tar gzip?
  2197.             if [ x"`echo "${DI_DRIVERFILE[$1]}" | grep ".tar.gz$"`" != x -o x"`echo "${DI_DRIVERFILE[$1]}" | grep ".tgz$"`" != x ]
  2198.             then
  2199.                 $TAR xzf "${DI_DRIVERFILE[$1]}" "${DI_DRIVEREXDIR[$1]}" >> "$LOGFILE" 2>&1
  2200.             fi
  2201.  
  2202.             #is tar bzip2?
  2203.             if [ x"`echo "${DI_DRIVERFILE[$1]}" | grep ".tar.bz2$"`" != x ]
  2204.             then
  2205.                 $TAR xjf "${DI_DRIVERFILE[$1]}" "${DI_DRIVEREXDIR[$1]}" >> "$LOGFILE" 2>&1
  2206.             fi
  2207.         else
  2208.             #is tar gzip?
  2209.             if [ x"`echo "${DI_DRIVERFILE[$1]}" | grep ".tar.gz$"`" != x -o x"`echo "${DI_DRIVERFILE[$1]}" | grep ".tgz$"`" != x ]
  2210.             then
  2211.                 $TAR xzf "${DI_DRIVERFILE[$1]}" >> "$LOGFILE" 2>&1
  2212.             fi
  2213.  
  2214.             #is tar bzip2?
  2215.             if [ x"`echo "${DI_DRIVERFILE[$1]}" | grep ".tar.bz2$"`" != x ]
  2216.             then
  2217.                 $TAR xjf "${DI_DRIVERFILE[$1]}" >> "$LOGFILE" 2>&1
  2218.             fi
  2219.         fi
  2220.  
  2221.         #is zip?
  2222.         if [ x"`echo "${DI_DRIVERFILE[$1]}" | grep ".zip$"`" != x ]
  2223.         then
  2224.             $UNZIP "${DI_DRIVERFILE[$1]}" >> "$LOGFILE" 2>&1
  2225.         fi
  2226.  
  2227.         #error? abort...
  2228.         if [ $? != "0" ]
  2229.         then
  2230.             echo "Unable to \"extract ${DI_DRIVERFILE[$1]}\""
  2231.             return $NO
  2232.         else
  2233.             printf "OK\n";
  2234.         fi
  2235.     fi
  2236.  
  2237.     #use svn
  2238.     if [ "${DI_DRIVERGET[$1]}" == "svn"  ]
  2239.     then
  2240.         if [ -d "${DI_DRIVERDIR[$1]}" ]
  2241.         then
  2242.             #be carefull!! (deleting old source)
  2243.             rm -rf "${DI_DRIVERDIR[$1]}" >> "$LOGFILE" 2>&1
  2244.         fi
  2245.  
  2246.         #if dir is missing (it should be) - check it out
  2247.         if [ ! -d "${DI_DRIVERDIR[$1]}" ]
  2248.         then
  2249.             $SVN co "${DI_DRIVERPATH1[$1]}" "${DI_DRIVERDIR[$1]}" >> "$LOGFILE" 2>&1
  2250.         fi
  2251.  
  2252.         #still missing? - use mirror/second source in case there is one
  2253.         if [ ! -d "${DI_DRIVERDIR[$1]}" -a x"${DI_DRIVERPATH2[$1]}" != x ]
  2254.         then
  2255.             $SVN co "${DI_DRIVERPATH2[$1]}" "${DI_DRIVERDIR[$1]}" >> "$LOGFILE" 2>&1
  2256.         fi
  2257.  
  2258.         printf "OK\n";
  2259.  
  2260.         echo "2. No extraction needed."
  2261.     fi
  2262.  
  2263.     #use cvs
  2264.     if [ "${DI_DRIVERGET[$1]}" == "cvs"  ]
  2265.     then
  2266.         if [ -d "${DI_DRIVERDIR[$1]}" ]
  2267.         then
  2268.             #be carefull!! (deleting old source)
  2269.             rm -rf "${DI_DRIVERDIR[$1]}" >> "$LOGFILE" 2>&1
  2270.         fi
  2271.  
  2272.         #if dir is missing (it should be) - check it out
  2273.         if [ ! -d "${DI_DRIVERDIR[$1]}" ]
  2274.         then
  2275.             $CVS -z3 "${DI_DRIVERPATH1[$1]}"  co -P "${DI_DRIVERPATH2[$1]}" >> "$LOGFILE" 2>&1
  2276.         fi
  2277.         printf "OK\n";
  2278.         echo "2. No extraction needed."
  2279.     fi
  2280.  
  2281.     #use git
  2282.     if [ "${DI_DRIVERGET[$1]}" == "git"  ]
  2283.     then
  2284.         if [ -d "${DI_DRIVERDIR[$1]}" ]
  2285.         then
  2286.             #be carefull!! (deleting old source)
  2287.             rm -rf "${DI_DRIVERDIR[$1]}" >> "$LOGFILE" 2>&1
  2288.         fi
  2289.  
  2290.         #if dir is missing (it should be) - check it out
  2291.         if [ ! -d "${DI_DRIVERDIR[$1]}" ]
  2292.         then
  2293.             $GIT clone "${DI_DRIVERPATH1[$1]}" >> "$LOGFILE" 2>&1
  2294.         fi
  2295.  
  2296.         #still missing? - use mirror/second source in case there is one
  2297.         if [ ! -d "${DI_DRIVERDIR[$1]}" -a x"${DI_DRIVERPATH2[$1]}" != x ]
  2298.         then
  2299.             $GIT clone "${DI_DRIVERPATH2[$1]}" >> "$LOGFILE" 2>&1
  2300.         fi
  2301.         printf "OK\n";
  2302.         echo "2. No extraction needed."
  2303.     fi
  2304.  
  2305.     #use cp
  2306.     if [ "${DI_DRIVERGET[$1]}" == "cp"  ]
  2307.     then
  2308.         if [ -d "${DI_DRIVERDIR[$1]}" ]
  2309.         then
  2310.             #be carefull!! (deleting old source)
  2311.             rm -rf "${DI_DRIVERDIR[$1]}" >> "$LOGFILE" 2>&1
  2312.         fi
  2313.  
  2314.         #if dir is missing (it should be) - check it out
  2315.         if [ ! -d "${DI_DRIVERDIR[$1]}" -a -d "${DI_DRIVERPATH1[$1]}" ]
  2316.         then
  2317.             cp -rf "${DI_DRIVERPATH1[$1]}" ./ >> "$LOGFILE" 2>&1
  2318.         fi
  2319.  
  2320.         #still missing? - use mirror/second source in case there is one
  2321.         if [ ! -d "${DI_DRIVERDIR[$1]}" -a -d "${DI_DRIVERPATH2[$1]}" ]
  2322.         then
  2323.             cp -rf "${DI_DRIVERPATH2[$1]}" ./ >> "$LOGFILE" 2>&1
  2324.         fi
  2325.         printf "OK\n";
  2326.         echo "2. No extraction needed."
  2327.     fi
  2328.  
  2329.     #extracted dir differs from expected one? rename it
  2330.     if [ x"${DI_DRIVEREXDIR[$1]}" != x -a x"${DI_DRIVEREXDIR[$1]}" != x"${DI_DRIVERDIR[$1]}" ]
  2331.     then
  2332.         mv "${DI_DRIVEREXDIR[$1]}" "${DI_DRIVERDIR[$1]}"
  2333.     fi
  2334.  
  2335.     #driver dir not available? abort...
  2336.     if [ ! -d "${DI_DRIVERDIR[$1]}" ]
  2337.     then
  2338.         echo "Directory \"${DI_DRIVERDIR[$1]}\" doesn't exist."
  2339.         return $NO
  2340.     fi
  2341.  
  2342. #2 - get the correct patch
  2343.     if [ x"${DI_PATCHFILE[$1]}" != x ]
  2344.     then
  2345.         printf "3. Getting the patch..."
  2346.         if [ ! -f "${DI_PATCHFILE[$1]}" ]
  2347.         then
  2348.             $WGET --progress=dot:mega -O "${DI_PATCHFILE[$1]}" "${DI_PATCHPATH1[$1]}" >> "$LOGFILE" 2>&1
  2349.             if [ "$?" != "0" ]
  2350.             then
  2351.                 rm "${DI_PATCHFILE[$1]}" 2>/dev/null
  2352.             fi
  2353.         fi
  2354.  
  2355.         if [ ! -f "${DI_PATCHFILE[$1]}" -a x"${DI_PATCHPATH2[$1]}" != x ]
  2356.         then
  2357.             $WGET --progress=dot:mega -O "${DI_PATCHFILE[$1]}" "${DI_PATCHPATH2[$1]}" >> "$LOGFILE" 2>&1
  2358.             if [ "$?" != "0" ]
  2359.             then
  2360.                 rm "${DI_PATCHFILE[$1]}" 2>/dev/null
  2361.             fi
  2362.         fi
  2363.  
  2364.         if [ ! -f "${DI_PATCHFILE[$1]}" ]
  2365.         then
  2366.             cp "`locate "${DI_PATCHFILE[$1]}" | grep "${DI_PATCHFILE[$1]}$" | head -n 1`" ./ >> "$LOGFILE" 2>&1
  2367.             if [ "$?" != "0" ]
  2368.             then
  2369.                 rm "${DI_PATCHFILE[$1]}" 2>/dev/null
  2370.             fi
  2371.         fi
  2372.  
  2373.         if [ ! -f "${DI_PATCHFILE[$1]}" ]
  2374.         then
  2375.             echo "Couldn't find the correct patch: ${DI_PATCHFILE[$1]}"
  2376.             return $NO
  2377.         else
  2378.             printf "OK\n";
  2379.         fi
  2380.  
  2381.         cp "${DI_PATCHFILE[$1]}" "${DI_DRIVERDIR[$1]}"  >> "$LOGFILE" 2>&1
  2382.  
  2383.         cd "${DI_DRIVERDIR[$1]}"
  2384.  
  2385.     #prepatching
  2386.         if [ x"${DI_PREPATCH[$1]}" != x ]
  2387.         then
  2388.             ${DI_PREPATCH[$1]} >> "$LOGFILE" 2>&1
  2389.         fi
  2390.  
  2391.     #3 - patch it
  2392.         confused=0
  2393.         printf "4. Patching the source..."
  2394.  
  2395.         if [ x"`$PATCH --dry-run -f -s -N ${DI_PATCHARG[$1]} -i "${DI_PATCHFILE[$1]}" | grep "^No file"`" != x ]
  2396.         then
  2397.             $PATCH --dry-run -f -s -N ${DI_PATCHARG[$1]} -i "${DI_PATCHFILE[$1]}" >> "$LOGFILE" 2>&1
  2398.             echo "Patching failed for files (Couldn't be found)."
  2399.             confused=1
  2400.         fi
  2401.  
  2402.         if [ x"`$PATCH --dry-run -f -s -N ${DI_PATCHARG[$1]} -i "${DI_PATCHFILE[$1]}" | grep "FAILED"`" != x ]
  2403.         then
  2404.             $PATCH --dry-run -f -s -N ${DI_PATCHARG[$1]} -i "${DI_PATCHFILE[$1]}" >> "$LOGFILE" 2>&1
  2405.             echo "Patching failed for some hunks."
  2406.             confused=1
  2407.         fi
  2408.  
  2409.         if [ x"`$PATCH --dry-run -f -s -N ${DI_PATCHARG[$1]} -i "${DI_PATCHFILE[$1]}" | grep "Reversed"`" != x ]
  2410.         then
  2411.             $PATCH --dry-run -f -s -N ${DI_PATCHARG[$1]} -i "${DI_PATCHFILE[$1]}" >> "$LOGFILE" 2>&1
  2412.             echo "Already patched?"
  2413.             confused=1
  2414.         fi
  2415.  
  2416.         $PATCH -N -f ${DI_PATCHARG[$1]} -i "${DI_PATCHFILE[$1]}" >> "$LOGFILE" 2>&1
  2417.         if [ x"$confused" == "x0" ]
  2418.         then
  2419.             printf "OK\n";
  2420.         fi
  2421.     else
  2422.         cd "${DI_DRIVERDIR[$1]}"
  2423.         echo "3./4. Not patching."
  2424.     fi
  2425.  
  2426. #4 - compile it
  2427.     if [ x"${DI_PRECOMP[$1]}" != x ]
  2428.     then
  2429.         ${DI_PRECOMP[$1]} >> "$LOGFILE" 2>&1
  2430.     fi
  2431.  
  2432.     #set all the needed variables
  2433.     if [ x"${DCONFIGS[$1]}" != x ]
  2434.     then
  2435.         for v in ${DCONFIGS[$1]}
  2436.         do
  2437.             export $v
  2438.         done
  2439.     fi
  2440.  
  2441.     printf "5. Compiling the source..."
  2442.     PWD=`pwd`
  2443.  
  2444.     ${DI_COMPILE[$1]} >> "$LOGFILE" 2>&1
  2445.     if [ $? != "0" ]
  2446.     then
  2447.         return $NO
  2448.     else
  2449.         printf "OK\n"
  2450.     fi
  2451.  
  2452.     if [ $NO_INSTALL = $YES ]
  2453.     then
  2454.         return $YES
  2455.     fi
  2456.  
  2457. #5 - install it
  2458.     printf "6. Installing the modules..."
  2459.     ${DI_INSTALL1[$1]} >> "$LOGFILE" 2>&1
  2460.     if [ x"${DI_INSTALL2[$1]}" != x ]
  2461.     then
  2462.         ${DI_INSTALL2[$1]}
  2463.     fi
  2464.  
  2465.     if [ $? != "0" ]
  2466.     then
  2467.         return $NO
  2468.     else
  2469.         printf "OK\n"
  2470.     fi
  2471.  
  2472.     if [ $NO_FIRMWARE = $YES ]
  2473.     then
  2474.         return $YES
  2475.     fi
  2476.  
  2477. #6 - check/install firmware
  2478.     printf "7. Checking firmware..."
  2479.     if [ x"${DF_FIRMFILES[$1]}" != x -a x"${DF_FIRMPATH1[$1]}" != x ]
  2480.     then
  2481.         firmware_action $1
  2482.         if [ $? == "$NO" ]
  2483.         then
  2484.             return $NO
  2485.         else
  2486.             printf "OK\n"
  2487.         fi
  2488.     else
  2489.         printf "OK\n"
  2490.     fi
  2491.  
  2492.     return $YES
  2493. }
  2494. #END install scripts
  2495.  
  2496. firmware_action() {
  2497.     needs_install=0
  2498.  
  2499.     #change back to driver directory
  2500.     cd "$D_DIR"
  2501.  
  2502.     if [ x"${DF_FIRMFILES[$1]}" != x -a x"${DF_FIRMPATH1[$1]}" != x ]
  2503.     then
  2504.         for ffp in ${DF_FIRMFILES[$1]}
  2505.         do
  2506.             if [ x"`find "$FIRMPATH" -name "$ffp"`" == x ]
  2507.             then
  2508.                 needs_install=1
  2509.             fi
  2510.         done
  2511.         if [ x"$needs_install" == "x0" ]
  2512.         then
  2513.             return $YES
  2514.         fi
  2515.         #firmware appears to be missing, install it into $FIRMPATH
  2516.  
  2517.         #download it if its not available
  2518.         #is compressed firmware available? no - wget it
  2519.         if [ ! -f "${DF_FIRMFILE[$1]}" ]
  2520.         then
  2521.             $WGET --progress=dot:mega -O "${DF_FIRMFILE[$1]}" "${DF_FIRMPATH1[$1]}" >> "$LOGFILE" 2>&1
  2522.             if [ "$?" != "0" ]
  2523.             then
  2524.                 rm "${DF_FIRMFILE[$1]}" 2>/dev/null
  2525.             fi
  2526.         fi
  2527.  
  2528.         #is compressed firmware available? no - wget it from mirror
  2529.         if [ ! -f "${DF_FIRMFILE[$1]}" -a x"${DF_FIRMPATH2[$1]}" != x ]
  2530.         then
  2531.             $WGET --progress=dot:mega -O "${DF_FIRMFILE[$1]}" "${DF_FIRMPATH2[$1]}" >> "$LOGFILE" 2>&1
  2532.             if [ "$?" != "0" ]
  2533.             then
  2534.                 rm "${DF_FIRMFILE[$1]}" 2>/dev/null
  2535.             fi
  2536.         fi
  2537.  
  2538.         #is compressed firmware available? no - try to locate it
  2539.         if [ ! -f "${DF_FIRMFILE[$1]}" ]
  2540.         then
  2541.             cp "`locate "${DF_FIRMFILE[$1]}" | grep "${DF_FIRMFILE[$1]}$" | head -n 1`" ./ >> "$LOGFILE" 2>&1
  2542.             if [ "$?" != "0" ]
  2543.             then
  2544.                 rm "${DF_FIRMFILE[$1]}" 2>/dev/null
  2545.             fi
  2546.         fi
  2547.  
  2548.         #is compressed firmware available? no - abort install
  2549.         if [ ! -f "${DF_FIRMFILE[$1]}" ]
  2550.         then
  2551.             echo "Couldn't find the correct firmware file: ${DF_FIRMFILE[$1]}"
  2552.             echo "The specified source seems to be down:"
  2553.             echo "${DF_FIRMPATH1[$1]}"
  2554.             if [ x"${DF_FIRMPATH2[$1]}" != x ]
  2555.             then
  2556.                 echo "${DF_FIRMPATH2[$1]}"
  2557.             fi
  2558.             echo "Get the file by hand, put it in \"$D_DIR/\""
  2559.             echo "and restart this installation."
  2560.             return $NO
  2561.         fi
  2562.  
  2563.         if [ -d "${DF_FIRMDIR[$1]}" ]
  2564.         then
  2565.             #be carefull!! (deleting old firmware)
  2566.             rm -rf "${DF_FIRMDIR[$1]}" >> "$LOGFILE" 2>&1
  2567.         fi
  2568.  
  2569.         #is tar gzip?
  2570.         if [ x"`echo "${DF_FIRMFILE[$1]}" | grep ".tar.gz$"`" != x -o x"`echo "${DF_FIRMFILE[$1]}" | grep ".tgz$"`" != x ]
  2571.         then
  2572.             $TAR xzf "${DF_FIRMFILE[$1]}" >> "$LOGFILE" 2>&1
  2573.         fi
  2574.  
  2575.         #is tar bzip2?
  2576.         if [ x"`echo "${DF_FIRMFILE[$1]}" | grep ".tar.bz2$"`" != x ]
  2577.         then
  2578.             $TAR xjf "${DF_FIRMFILE[$1]}" >> "$LOGFILE" 2>&1
  2579.         fi
  2580.  
  2581.         #is zip?
  2582.         if [ x"`echo "${DF_FIRMFILE[$1]}" | grep ".zip$"`" != x ]
  2583.         then
  2584.             $UNZIP "${DF_FIRMFILE[$1]}" >> "$LOGFILE" 2>&1
  2585.         fi
  2586.  
  2587.         #error? abort...
  2588.         if [ $? != "0" ]
  2589.         then
  2590.             echo "Unable to extract \"${DF_FIRMFILE[$1]}\"" >> "$LOGFILE"
  2591.             return $NO
  2592.         fi
  2593.  
  2594.         #extracted firmware, change dir
  2595.         cd "${DF_FIRMDIR[$1]}"
  2596.  
  2597.         if [ ! -d "$FIRMPATH/${DF_INSTALLDIR[$1]}" ]
  2598.         then
  2599.             mkdir -p "$FIRMPATH/${DF_INSTALLDIR[$1]}" >> "$LOGFILE" 2>&1
  2600.         fi
  2601.  
  2602.         #check if there are files available
  2603.         if [ x"`ls 2>/dev/null`" == x ]
  2604.         then
  2605.             echo "No firmware found in downloaded archive."
  2606.             return $NO
  2607.         fi
  2608.  
  2609.         for iffp in ${DF_FIRMFILES[$1]}
  2610.         do
  2611.             firmfilepath="`find -name "$iffp" | tail -n 1`"
  2612.             if [ x"$firmfilepath" != x ]
  2613.             then
  2614.                 cp "$firmfilepath" "$FIRMPATH/${DF_INSTALLDIR[$1]}" >> "$LOGFILE" 2>&1
  2615.             fi
  2616.         done
  2617.  
  2618.         #error? abort...
  2619.         if [ $? != "0" ]
  2620.         then
  2621.             echo "Unable to install firmware."
  2622.             return $NO
  2623.         fi
  2624.     else
  2625.         echo "No firmware information available."
  2626.         return $ERROR
  2627.     fi
  2628.  
  2629.     return $YES
  2630. }
  2631.  
  2632. isInstalled() {
  2633.     #_D_river or _S_tack? neither? abort
  2634.     if [ x"$2" != "xD" -a x"$2" != "xS" ]
  2635.     then
  2636.         echo "Invalid subset [D/S]!"
  2637.         return $ERROR
  2638.     fi
  2639.  
  2640.     if [ x"$2" == "xD" ]
  2641.     then
  2642.         if [ $1 -lt 0 -o $1 -ge ${DCOUNT} ]
  2643.         then
  2644.             echo "Invalid driver number!"
  2645.             return $ERROR
  2646.         fi
  2647.  
  2648.         #no module specified, thus return $NO
  2649.         if [ x"${DMODULE[$1]}" == x ]
  2650.         then
  2651.             return $NO
  2652.         fi
  2653.  
  2654.         if [ x"`$MODPROBE -l | grep "\/"${DMODULE[$1]}"\.ko"`" != x ]
  2655.         then
  2656.             if [ x"${DMODINFO[$1]}" != x ]
  2657.             then
  2658.                 modfile="`$MODPROBE -l | grep "\/"${DMODULE[$1]}"\.ko"`"
  2659.                 if [ x"`modinfo "$modfile" | grep "${DMODINFO[$1]}"`" != x ]
  2660.                 then
  2661.                     return $YES
  2662.                 else
  2663.                     return $NO
  2664.                 fi
  2665.             else
  2666.                 return $YES
  2667.             fi
  2668.         else
  2669.             return $NO
  2670.         fi
  2671.     fi
  2672.  
  2673.     if [ x"$2" == "xS" ]
  2674.     then
  2675.         if [ $1 -lt 0 -o $1 -ge ${SCOUNT} ]
  2676.         then
  2677.             echo "Invalid stack number!"
  2678.             return $ERROR
  2679.         fi
  2680.  
  2681.         #no module specified, thus return $NO
  2682.         if [ x"${SMODULE[$1]}" == x ]
  2683.         then
  2684.             return $NO
  2685.         fi
  2686.  
  2687.         if [ x"`$MODPROBE -l | grep "\/"${SMODULE[$1]}"\.ko"`" != x ]
  2688.         then
  2689.             return $YES
  2690.         else
  2691.             return $NO
  2692.         fi
  2693.     fi
  2694.  
  2695.     return $ERROR
  2696. }
  2697.  
  2698. isInstalledFirmware() {
  2699.     isInstalled=1
  2700.     if [ $1 -lt 0 -o $1 -ge ${DCOUNT} ]
  2701.     then
  2702.         echo "Invalid driver number!"
  2703.         return $ERROR
  2704.     fi
  2705.  
  2706.     #no module specified, thus return $NO
  2707.     if [ x"${DF_FIRMFILES[$1]}" == x ]
  2708.     then
  2709.         return $ERROR
  2710.     fi
  2711.  
  2712.     for iiffp in ${DF_FIRMFILES[$1]}
  2713.     do
  2714.         if [ x"`find "$FIRMPATH" -name "$iiffp"`" == x ]
  2715.         then
  2716.             isInstalled=0
  2717.         fi
  2718.     done
  2719.  
  2720.     if [ x"$isInstalled" == "x1" ]
  2721.     then
  2722.         return $YES
  2723.     else
  2724.         return $NO
  2725.     fi
  2726.  
  2727.     return $ERROR
  2728. }
  2729.  
  2730. isCompiled() {
  2731.     #_D_river or _S_tack? neither? abort
  2732.     if [ x"$2" != "xD" -a x"$2" != "xS" ]
  2733.     then
  2734.         echo "Invalid subset [D/S]!"
  2735.         return $ERROR
  2736.     fi
  2737.  
  2738.     if [ x"$2" == "xD" ]
  2739.     then
  2740.         if [ $1 -lt 0 -o $1 -ge ${DCOUNT} ]
  2741.         then
  2742.             echo "Invalid driver number!"
  2743.             return $ERROR
  2744.         fi
  2745.  
  2746.         #no module specified, thus return $NO
  2747.         if [ x"${DMODULE[$1]}" == x ]
  2748.         then
  2749.             return $NO
  2750.         fi
  2751.  
  2752.         if [ ! -d "$D_DIR/" ]
  2753.         then
  2754.             return $ERROR
  2755.         fi
  2756.  
  2757.         cd "$D_DIR/"
  2758.  
  2759.         if [ ! -d "${DI_DRIVERDIR[$1]}" ]
  2760.         then
  2761.             return $ERROR
  2762.         fi
  2763.  
  2764.         cd "${DI_DRIVERDIR[$1]}/"
  2765.  
  2766.         if [ x"`find -name ${DMODULE[$1]}".ko"`" != x ]
  2767.         then
  2768.             if [ x"${DMODINFO[$1]}" != x ]
  2769.             then
  2770.                 modfile="`find -name ${DMODULE[$1]}".ko"`"
  2771.                 if [ x"`modinfo "$modfile" | grep "${DMODINFO[$1]}"`" != x ]
  2772.                 then
  2773.                     return $YES
  2774.                 else
  2775.                     return $NO
  2776.                 fi
  2777.             else
  2778.                 return $YES
  2779.             fi
  2780.         else
  2781.             return $NO
  2782.         fi
  2783.     fi
  2784.  
  2785.     if [ x"$2" == "xS" ]
  2786.     then
  2787.         if [ $1 -lt 0 -o $1 -ge ${SCOUNT} ]
  2788.         then
  2789.             echo "Invalid stack number!"
  2790.             return $ERROR
  2791.         fi
  2792.  
  2793.         #no module specified, thus return $NO
  2794.         if [ x"${SMODULE[$1]}" == x ]
  2795.         then
  2796.             return $NO
  2797.         fi
  2798.  
  2799.         if [ ! -d "$D_DIR/" ]
  2800.         then
  2801.             return $ERROR
  2802.         fi
  2803.  
  2804.         cd "$D_DIR/"
  2805.  
  2806.         if [ ! -d "${SI_DRIVERDIR[$1]}" ]
  2807.         then
  2808.             return $ERROR
  2809.         fi
  2810.  
  2811.         cd "${SI_DRIVERDIR[$1]}/"
  2812.  
  2813.         if [ x"`find -name ${SMODULE[$1]}".ko"`" != x ]
  2814.         then
  2815.             return $YES
  2816.         else
  2817.             return $NO
  2818.         fi
  2819.     fi
  2820.  
  2821.     return $ERROR
  2822. }
  2823.  
  2824. isLoaded() {
  2825.     #_D_river or _S_tack? neither? abort
  2826.     if [ x"$2" != "xD" -a x"$2" != "xS" ]
  2827.     then
  2828.         echo "Invalid subset [D/S]!"
  2829.         return $ERROR
  2830.     fi
  2831.  
  2832.     if [ x"$2" == "xD" ]
  2833.     then
  2834.         if [ $1 -lt 0 -o $1 -ge $DCOUNT ]
  2835.         then
  2836.             echo "Invalid driver number!"
  2837.             return $ERROR
  2838.         fi
  2839.  
  2840.         #no module specified, thus return $NO
  2841.         if [ x"${DMODULE[$1]}" == x ]
  2842.         then
  2843.             return $NO
  2844.         fi
  2845.  
  2846.         if [ x"`lsmod | grep ${DMODULE[$1]}" "`" != x ]
  2847.         then
  2848.             if [ x"${DMODINFO[$1]}" != x ]
  2849.             then
  2850.                 if [ x"`modinfo "${DMODULE[$1]}" | grep "${DMODINFO[$1]}"`" != x ]
  2851.                 then
  2852.                     return $YES
  2853.                 else
  2854.                     return $NO
  2855.                 fi
  2856.             else
  2857.                 return $YES
  2858.             fi
  2859.         else
  2860.             return $NO
  2861.         fi
  2862.     fi
  2863.  
  2864.     if [ x"$2" == "xS" ]
  2865.     then
  2866.         if [ $1 -lt 0 -o $1 -ge $SCOUNT ]
  2867.         then
  2868.             echo "Invalid stack number!"
  2869.             return $ERROR
  2870.         fi
  2871.  
  2872.         #no module specified, thus return $NO
  2873.         if [ x"${SMODULE[$1]}" == x ]
  2874.         then
  2875.             return $NO
  2876.         fi
  2877.  
  2878.         if [ x"`lsmod | grep ${SMODULE[$1]}" "`" != x ]
  2879.         then
  2880.             return $YES
  2881.         else
  2882.             return $NO
  2883.         fi
  2884.     fi
  2885.  
  2886.     return $ERROR
  2887. }
  2888.  
  2889. isInKernel() {
  2890.     #_D_river or _S_tack? neither? abort
  2891.     if [ x"$2" != "xD" -a x"$2" != "xS" ]
  2892.     then
  2893.         echo "Invalid subset [D/S]!"
  2894.         return $ERROR
  2895.     fi
  2896.  
  2897.     if [ x"$2" == "xD" ]
  2898.     then
  2899.         if [ $1 -lt 0 -o $1 -ge $DCOUNT ]
  2900.         then
  2901.             echo "Invalid driver number!"
  2902.             return $ERROR
  2903.         fi
  2904.  
  2905.         if [ "x${DCONFIG[$1]}" != x ]
  2906.         then
  2907.             if [ x"`grep ${DCONFIG[$1]}"y" "/lib/modules/"$KVER"/build/.config"`" != x ]
  2908.             then
  2909.                 return $YES
  2910.             else
  2911.                 return $NO
  2912.             fi
  2913.         else
  2914.             return $NO
  2915.         fi
  2916.     fi
  2917.  
  2918.     if [ x"$2" == "xS" ]
  2919.     then
  2920.         if [ $1 -lt 0 -o $1 -ge $SCOUNT ]
  2921.         then
  2922.             echo "Invalid stack number!"
  2923.             return $ERROR
  2924.         fi
  2925.  
  2926.         if [ x${SCONFIG[$1]} != x ]
  2927.         then
  2928.             if [ x"`grep ${SCONFIG[$1]}"y" "/lib/modules/"$KVER"/build/.config"`" != x ]
  2929.             then
  2930.                 return $YES
  2931.             else
  2932.                 return $NO
  2933.             fi
  2934.         else
  2935.             return $NO
  2936.         fi
  2937.     fi
  2938.  
  2939.     return $ERROR
  2940. }
  2941.  
  2942. listInstalledStacks() {
  2943.     echo "Found following stacks installed:"
  2944.     i=0
  2945.     while [ $i -lt $SCOUNT ]
  2946.     do
  2947.         isInstalled $i "S"
  2948.         if [ $? -eq $YES ]
  2949.         then
  2950.             printf "$i. ${SNAME[$i]}\n"
  2951.         fi
  2952.         i=$(($i+1))
  2953.     done
  2954. }
  2955.  
  2956. listInstalledDrivers() {
  2957.     echo "Found following drivers installed:"
  2958.     i=0
  2959.     while [ $i -lt $DCOUNT ]
  2960.     do
  2961.         isInstalled $i "D"
  2962.         if [ $? -eq $YES ]
  2963.         then
  2964.             if [ x"${DSTACK[$i]}" != x ]
  2965.             then
  2966.                 printf "$i. ${DNAME[$i]} - ${SNAME[${DSTACK[$i]}]}\n"
  2967.             else
  2968.                 printf "$i. ${DNAME[$i]}\n"
  2969.             fi
  2970.         fi
  2971.         i=$(($i+1))
  2972.     done
  2973. }
  2974.  
  2975. listInstalledFirmware() {
  2976.     echo "Found following firmwares installed:"
  2977.     i=0
  2978.     while [ $i -lt $DCOUNT ]
  2979.     do
  2980.         isInstalledFirmware $i
  2981.         ret=$?
  2982.         if [ $ret -eq $YES ]
  2983.         then
  2984.             if [ x"${DSTACK[$i]}" != x ]
  2985.             then
  2986.                 printf "$i. ${DNAME[$i]} - ${SNAME[${DSTACK[$i]}]}\n"
  2987.             else
  2988.                 printf "$i. ${DNAME[$i]}\n"
  2989.             fi
  2990.         fi
  2991.         i=$(($i+1))
  2992.     done
  2993. }
  2994.  
  2995. listLoadedStacks() {
  2996.     echo "Found following stacks loaded (as module):"
  2997.     i=0
  2998.     while [ $i -lt $SCOUNT ]
  2999.     do
  3000.         isLoaded $i "S"
  3001.         if [ $? -eq $YES ]
  3002.         then
  3003.             printf "$i. ${SNAME[$i]}\n"
  3004.         fi
  3005.         i=$(($i+1))
  3006.     done
  3007. }
  3008.  
  3009. listLoadedDrivers() {
  3010.     echo "Found following drivers loaded (as module):"
  3011.     i=0
  3012.     while [ $i -lt $DCOUNT ]
  3013.     do
  3014.         isLoaded $i "D"
  3015.         if [ $? -eq $YES ]
  3016.         then
  3017.             if [ x"${DSTACK[$i]}" != x ]
  3018.             then
  3019.                 printf "$i. ${DNAME[$i]} - ${SNAME[${DSTACK[$i]}]}\n"
  3020.             else
  3021.                 printf "$i. ${DNAME[$i]}\n"
  3022.             fi
  3023.         fi
  3024.         i=$(($i+1))
  3025.     done
  3026. }
  3027.  
  3028. listKernelStacks() {
  3029.     echo "Found following stacks in the Kernel:"
  3030.     i=0
  3031.     while [ $i -lt $SCOUNT ]
  3032.     do
  3033.         isInKernel $i "S"
  3034.         if [ $? -eq $YES ]
  3035.         then
  3036.             printf "$i. ${SNAME[$i]}\n"
  3037.         fi
  3038.         i=$(($i+1))
  3039.     done
  3040. }
  3041.  
  3042. listKernelDrivers() {
  3043.     echo "Found following drivers in the Kernel:"
  3044.     i=0
  3045.     while [ $i -lt $DCOUNT ]
  3046.     do
  3047.         isInKernel $i "D"
  3048.         if [ $? -eq $YES ]
  3049.         then
  3050.             if [ x"${DSTACK[$i]}" != x ]
  3051.             then
  3052.                 printf "$i. ${DNAME[$i]} - ${SNAME[${DSTACK[$i]}]}\n"
  3053.             else
  3054.                 printf "$i. ${DNAME[$i]}\n"
  3055.             fi
  3056.         fi
  3057.         i=$(($i+1))
  3058.     done
  3059. }
  3060.  
  3061. listSupportedStacks() {
  3062.     echo "Following stacks are supported:"
  3063.     i=0
  3064.     while [ $i -lt $SCOUNT ]
  3065.     do
  3066.         if [ x"${SMODULE[$i]}" != x ]
  3067.         then
  3068.             printf "$i. ${SNAME[$i]}\n"
  3069.         fi
  3070.         i=$(($i+1))
  3071.     done
  3072. }
  3073.  
  3074. listSupportedDrivers() {
  3075.     echo "Following drivers are supported:"
  3076.     i=0
  3077.     while [ $i -lt $DCOUNT ]
  3078.     do
  3079.         if [ x"${DMODULE[$i]}" != x ]
  3080.         then
  3081.             if [ x"${DSTACK[$i]}" != x ]
  3082.             then
  3083.                 printf "$i. ${DNAME[$i]} - ${SNAME[${DSTACK[$i]}]}\n"
  3084.             else
  3085.                 printf "$i. ${DNAME[$i]}\n"
  3086.             fi
  3087.         fi
  3088.         i=$(($i+1))
  3089.     done
  3090. }
  3091.  
  3092. unloadDriver() {
  3093.     if [ $1 -lt 0 -o $1 -ge $DCOUNT ]
  3094.     then
  3095.         echo "Invalid driver number!"
  3096.         return $ERROR
  3097.     fi
  3098.  
  3099.     isLoaded $1 "D"
  3100.     if [ $? -eq $NO ]
  3101.     then
  3102.         echo "Driver isn't loaded."
  3103.         return $NO
  3104.     fi
  3105.  
  3106.     last=200
  3107.     current=0
  3108.  
  3109.     for i in ${DMODULES[$1]}
  3110.     do
  3111.         i="`echo "$i" | sed 's/-/_/'`"
  3112.         if [ x"`lsmod | grep $i" "`" != x ]
  3113.         then
  3114.             current=$(($current+1))
  3115.         fi
  3116.     done
  3117.  
  3118.     while [ $current -lt $last -a $current -gt 0 ]
  3119.     do
  3120.         last=$current
  3121.         current=0
  3122.         for i in ${DMODULES[$1]}
  3123.         do
  3124.             i="`echo "$i" | sed 's/-/_/'`"
  3125.             rmmod $i 2>/dev/null
  3126.             if [ x"`lsmod | grep $i" "`" != x ]
  3127.             then
  3128.                 current=$(($current+1))
  3129.             fi
  3130.         done
  3131.     done
  3132.  
  3133.     if [ $current -eq 0 ]
  3134.     then
  3135.         return $YES
  3136.     else
  3137.         return $NO
  3138.     fi
  3139. }
  3140.  
  3141. insertDriver() {
  3142.     if [ $1 -lt 0 -o $1 -ge $DCOUNT ]
  3143.     then
  3144.         echo "Invalid driver number!"
  3145.         return $ERROR
  3146.     fi
  3147.  
  3148.     isInKernel $1 "D"
  3149.     if [ $? -eq $YES ]
  3150.     then
  3151.         echo "Cannot insert an in-kernel driver."
  3152.         return $NO
  3153.     fi
  3154.  
  3155.     isCompiled $1 "D"
  3156.     if [ $? -eq $NO ]
  3157.     then
  3158.         echo "Driver isn't compiled."
  3159.         return $NO
  3160.     fi
  3161.  
  3162.     isLoaded $1 "D"
  3163.     if [ $? -eq $YES ]
  3164.     then
  3165.         unloadDriver $1
  3166.         if [ $? -ne $YES ]
  3167.         then
  3168.             echo "Can't unload current driver."
  3169.             echo "You need to remove it from memory."
  3170.             echo
  3171.             return $NO
  3172.         fi
  3173.     fi
  3174.  
  3175.     last=-1
  3176.     current=0
  3177.     modnum=0
  3178.  
  3179.     cd "$D_DIR/${DI_DRIVERDIR[$1]}/"
  3180.  
  3181.     for i in ${DMODULES[$1]}
  3182.     do
  3183.         if [ x"`find -name $i".ko"`" != x ]
  3184.         then
  3185.             INSMOD[$modnum]="`find -name $i".ko"`"
  3186.             CHECKMOD[$modnum]="$i"
  3187.             modnum=$(($modnum+1))
  3188.         fi
  3189.     done
  3190.  
  3191.     if [ $modnum -eq 0 ]
  3192.     then
  3193.         echo "Driver isn't compiled."
  3194.         return $NO
  3195.     fi
  3196.  
  3197.     while [ $current -gt $last ]
  3198.     do
  3199.         last=$current
  3200.         current=0
  3201.         i=0
  3202.         while [ $i -lt $modnum ]
  3203.         do
  3204.             insmod ${INSMOD[$i]} 2>/dev/null
  3205.             j="`echo ${CHECKMOD[$i]} | sed 's/-/_/'`"
  3206.             if [ x"`lsmod | grep "$j"`" != x ]
  3207.             then
  3208.                 current=$(($current+1))
  3209.             fi
  3210.             i=$(($i+1))
  3211.         done
  3212.     done
  3213.  
  3214.     if [ $current -eq $modnum ]
  3215.     then
  3216.         return $YES
  3217.     else
  3218.         return $NO
  3219.     fi
  3220. }
  3221.  
  3222. loadDriver() {
  3223.     if [ $1 -lt 0 -o $1 -ge $DCOUNT ]
  3224.     then
  3225.         echo "Invalid driver number!"
  3226.         return $ERROR
  3227.     fi
  3228.  
  3229.     isInKernel $1 "D"
  3230.     if [ $? -eq $YES ]
  3231.     then
  3232.         echo "Cannot load an in-kernel driver."
  3233.         return $NO
  3234.     fi
  3235.  
  3236.     isInstalled $1 "D"
  3237.     if [ $? -eq $NO ]
  3238.     then
  3239.         echo "Driver is not installed."
  3240.         return $NO
  3241.     fi
  3242.  
  3243.     isLoaded $1 "D"
  3244.     if [ $? -eq $YES ]
  3245.     then
  3246.         echo "Driver is already loaded."
  3247.         return $NO
  3248.     fi
  3249.  
  3250.     for i in ${DMODULES[$1]}
  3251.     do
  3252.         i="`echo "$i" | sed 's/-/_/'`"
  3253.         $MODPROBE $i 2>/dev/null
  3254.     done
  3255.  
  3256.     isLoaded $1 "D"
  3257.     if [ $? -eq $NO ]
  3258.     then
  3259.         return $NO
  3260.     fi
  3261.  
  3262.     return $YES
  3263. }
  3264.  
  3265. installDriver() {
  3266. #check if argument is out of range
  3267.     if [ $1 -lt 0 -o $1 -ge $DCOUNT ]
  3268.     then
  3269.         echo "Invalid driver number!"
  3270.         return $ERROR
  3271.     fi
  3272.  
  3273. #check if atleast kernel headers are installed
  3274.     if [ ! -f "$KSRC/.config" ]
  3275.     then
  3276.         echo "Kernel headers missing!"
  3277.         return $ERROR
  3278.     fi
  3279.  
  3280. #check if GCC is in path
  3281.     if [ x"$GCC" == x ]
  3282.     then
  3283.         echo "GCC not installed!"
  3284.         return $ERROR
  3285.     fi
  3286.  
  3287. #check if gcc version matches the kernel gcc version
  3288.     gccvers="`$GCC --version | head -n 1 | sed 's/^[^ ]* [^ ]* \([2-4]..*\)$/\1/'`"
  3289.     ret="`cat /proc/version | grep "$gccvers"`"
  3290.  
  3291.     if [ x"$ret" == x ]
  3292.     then
  3293.         echo "Your current GCC version doesn't match the version your kernel was compiled with."
  3294.         echo "The build modules will probably not load into the running kernel."
  3295.     fi
  3296.  
  3297. #cd into driver build directory
  3298.     mkdir -p "$D_DIR/"
  3299.     if [ ! -d "$D_DIR/" ]
  3300.     then
  3301.         echo "Directory \"$D_DIR/\" not available."
  3302.         return $ERROR
  3303.     fi
  3304.  
  3305.     cd "$D_DIR/"
  3306.  
  3307. #run the custom installscript
  3308.     if [ x"${DI_INIT[$1]}" != x ]
  3309.     then
  3310.         ${DI_INIT[$1]} $1
  3311.     fi
  3312.  
  3313.     install_action $1
  3314.  
  3315.     ret=$?
  3316.  
  3317.     echo "Running \"depmod -ae\"..."
  3318.     depmod -ae
  3319.  
  3320.     return $ret
  3321. }
  3322.  
  3323. installFirmware() {
  3324. #check if argument is out of range
  3325.     if [ $1 -lt 0 -o $1 -ge $DCOUNT ]
  3326.     then
  3327.         echo "Invalid driver number!"
  3328.         return $ERROR
  3329.     fi
  3330.  
  3331. #cd into driver build directory
  3332.     mkdir -p "$D_DIR/"
  3333.     if [ ! -d "$D_DIR/" ]
  3334.     then
  3335.         echo "Directory \"$D_DIR/\" not available."
  3336.         return $ERROR
  3337.     fi
  3338.  
  3339.     firmware_action $1
  3340.  
  3341.     ret=$?
  3342.     return $ret
  3343. }
  3344.  
  3345. installStack() {
  3346. #check if argument is out of range
  3347.     if [ $1 -lt 0 -o $1 -ge $SCOUNT ]
  3348.     then
  3349.         echo "Invalid stack number!"
  3350.         return $ERROR
  3351.     fi
  3352.  
  3353. #check if atleast kernel headers are installed
  3354.     if [ ! -f "$KSRC/.config" ]
  3355.     then
  3356.         echo "Kernel headers missing!"
  3357.         return $ERROR
  3358.     fi
  3359.  
  3360. #check if kernel source is installed
  3361.     missing=0
  3362.     #check for default files README COPYING CREDITS (i hope every kernel source includes them all)
  3363.     if [ ! -f "$KSRC/README" -o ! -f "$KSRC/COPYING" -o ! -f "$KSRC/CREDITS" ]
  3364.     then
  3365.         missing=1
  3366. #        echo "Kernel source missing!"
  3367. #        return $ERROR
  3368.     fi
  3369.  
  3370.     #2nd check (in case README COPYING and CREDITS is included in kernel headers)
  3371.     #searches for .c files in "net" subdir
  3372.  
  3373.     if [ $missing = 0 -a x"`find "$KSRC/net/" -name "*\.c" | head -n 1`" = x ]
  3374.     then
  3375.         missing=1
  3376. #        echo "Kernel source missing!"
  3377. #        return $ERROR
  3378.     fi
  3379.  
  3380. #check if GCC is in path
  3381.     if [ x"$GCC" == x ]
  3382.     then
  3383.         echo "GCC not installed!"
  3384.         return $ERROR
  3385.     fi
  3386.  
  3387. #check if gcc version matches the kernel gcc version
  3388.     gccvers="`$GCC --version | head -n 1 | sed 's/^[^ ]* [^ ]* \([2-4]..*\)$/\1/'`"
  3389.     ret="`cat /proc/version | grep "$gccvers"`"
  3390.  
  3391.     if [ x"$ret" == x ]
  3392.     then
  3393.         echo "Your current GCC version doesn't match the version your kernel was compiled with."
  3394.         echo "The build modules will probably not load into the running kernel."
  3395.     fi
  3396.  
  3397. #cd into driver build directory
  3398.     mkdir -p "$D_DIR/"
  3399.     if [ ! -d "$D_DIR/" ]
  3400.     then
  3401.         echo "Directory \"$D_DIR/\" not available."
  3402.         return $ERROR
  3403.     fi
  3404.  
  3405.     cd "$D_DIR/"
  3406.  
  3407. #run the custom installscript
  3408.     if [ x"${SI_INIT[$1]}" != x ]
  3409.     then
  3410.         ${SI_INIT[$1]} $missing
  3411.     fi
  3412.  
  3413. #map stack install to driver install, so we can use the install_action functionality
  3414.     DCONFIGS[999]=${SCONFIGS[$1]}
  3415. #    DI_INIT[999]=${SI_INIT[$1]}
  3416.     DI_DRIVERGET[999]=${SI_DRIVERGET[$1]}
  3417.     DI_DRIVERFILE[999]=${SI_DRIVERFILE[$1]}
  3418.     DI_DRIVERPATH1[999]=${SI_DRIVERPATH1[$1]}
  3419.     DI_DRIVERPATH2[999]=${SI_DRIVERPATH2[$1]}
  3420.     DI_DRIVEREXDIR[999]=${SI_DRIVEREXDIR[$1]}
  3421.     DI_DRIVERDIR[999]=${SI_DRIVERDIR[$1]}
  3422.     DI_PREPATCH[999]=${SI_PREPATCH[$1]}
  3423.     DI_PATCHFILE[999]=${SI_PATCHFILE[$1]}
  3424.     DI_PATCHPATH1[999]=${SI_PATCHPATH1[$1]}
  3425.     DI_PATCHPATH2[999]=${SI_PATCHPATH2[$1]}
  3426.     DI_PATCHARG[999]=${SI_PATCHARG[$1]}
  3427.     DI_PRECOMP[999]=${SI_PRECOMP[$1]}
  3428.     DI_COMPILE[999]=${SI_COMPILE[$1]}
  3429.     DI_INSTALL1[999]=${SI_INSTALL1[$1]}
  3430.     DI_INSTALL2[999]=${SI_INSTALL2[$1]}
  3431.  
  3432.     install_action "999"
  3433.  
  3434.     ret=$?
  3435.  
  3436.     echo "Running \"depmod -ae\"..."
  3437.     depmod -ae
  3438.  
  3439.     return $ret
  3440. }
  3441.  
  3442. removeDriver() {
  3443. #check if argument is out of range
  3444.     if [ "$1" -lt 0 -o "$1" -ge "$DCOUNT" ]
  3445.     then
  3446.         echo "Invalid driver number!"
  3447.         return $ERROR
  3448.     fi
  3449.  
  3450. #check if its in-kernel
  3451.     isInKernel $1 "D"
  3452.     if [ $? -eq $YES ]
  3453.     then
  3454.         echo "Cannot remove drivers build into the kernel!"
  3455.         exit
  3456.     fi
  3457.  
  3458. #check if its installed
  3459.     isInstalled $1 "D"
  3460.     if [ $? -eq $NO ]
  3461.     then
  3462.         echo "This driver isn't installed and thus cannot be removed."
  3463.         exit
  3464.     fi
  3465.  
  3466.     echo "Starting to remove \"${DNAME[$1]}\" driver"
  3467.  
  3468. #check if its loaded and unload befor trying to remove
  3469.     isLoaded $1 "D"
  3470.     if [ $? -eq $YES ]
  3471.     then
  3472.         unloadDriver $1
  3473.         if [ $? -eq $NO -o $? -eq $ERROR ]
  3474.         then
  3475.             echo "Couldn't unload the driver."
  3476.         fi
  3477.     fi
  3478.  
  3479. #loop through the modules, find and rm them
  3480.     for i in ${DMODULES[$1]}
  3481.     do
  3482.         if [ -f "`$MODPROBE -l | grep \/$i\.ko`" ]
  3483.         then
  3484.             rm -i "`$MODPROBE -l | grep \/$i\.ko`"
  3485.         fi
  3486.     done
  3487.  
  3488.     echo "Running \"depmod -ae\"..."
  3489.     depmod -ae
  3490.  
  3491.     return $YES
  3492. }
  3493.  
  3494. removeFirmware() {
  3495. #check if argument is out of range
  3496.     if [ "$1" -lt 0 -o "$1" -ge "$DCOUNT" ]
  3497.     then
  3498.         echo "Invalid driver number!"
  3499.         return $ERROR
  3500.     fi
  3501.  
  3502. #check if its installed
  3503.     isInstalledFirmware $1
  3504.     if [ $? -eq $NO ]
  3505.     then
  3506.         echo "This firmware isn't installed and thus cannot be removed."
  3507.         exit
  3508.     fi
  3509.  
  3510.     echo "Starting to remove \"${DNAME[$1]}\" firmware"
  3511.  
  3512. #loop through the modules, find and rm them
  3513.     for i in ${DF_FIRMFILES[$1]}
  3514.     do
  3515.         oldnumfiles=999
  3516.         numfiles="`find "$FIRMPATH" -name "$i" 2>/dev/null | wc -l`"
  3517.         while [ "$numfiles" -gt 0 -a "$numfiles" -lt "$oldnumfiles" ]
  3518.         do
  3519.             fileone="`find "$FIRMPATH" -name "$i" 2>/dev/null | head -n 1`"
  3520.             rm -i "$fileone"
  3521.  
  3522.             oldnumfiles=$numfiles
  3523.             if [ ! -f "$fileone" ]
  3524.             then
  3525.                 numfiles="`find "$FIRMPATH" -name "$i" 2>/dev/null | wc -l`"
  3526.             fi
  3527.         done
  3528.     done
  3529.  
  3530.     return $YES
  3531. }
  3532.  
  3533. removeStack() {
  3534. #check if argument is out of range
  3535.     if [ "$1" -lt 0 -o "$1" -ge "$SCOUNT" ]
  3536.     then
  3537.         echo "Invalid stack number!"
  3538.         return $ERROR
  3539.     fi
  3540.  
  3541.     echo "Starting to remove \"${SNAME[$1]}\" driver"
  3542.  
  3543. #loop through the modules, find and rm them
  3544.     for i in ${SMODULES[$1]}
  3545.     do
  3546.         if [ -f "`$MODPROBE -l | grep \/$i\.ko`" ]
  3547.         then
  3548.             rm -i "`$MODPROBE -l | grep \/$i\.ko`"
  3549.         fi
  3550.     done
  3551.  
  3552.     echo "Running \"depmod -ae\"..."
  3553.     depmod -ae
  3554.  
  3555.     return $YES
  3556. }
  3557.  
  3558. checkusb() {
  3559.     if [ x"$LSUSB" != x ]
  3560.     then
  3561.         usbnum=`$LSUSB | wc -l`
  3562.         j=1
  3563.         if [ x"`$LSUSB -vvv | grep -i "$1"`" != x ]
  3564.         then
  3565.             while [ $j -le $usbnum ]
  3566.             do
  3567.                 bus=`$LSUSB | head -n $j | tail -n 1 | awk '{print $2}' | sed 's/^0*//'`
  3568.                 dev=`$LSUSB | head -n $j | tail -n 1 | awk '{print $4}' | sed 's/^0*//' | sed 's/:$//'`
  3569.  
  3570.                 if [ x"$bus" == x ]
  3571.                 then
  3572.                     bus=0
  3573.                 fi
  3574.                 if [ x"$dev" == x ]
  3575.                 then
  3576.                     dev=0
  3577.                 fi
  3578.  
  3579.                 if [ x"`$LSUSB -s "$bus:$dev" -v | grep -i "$1"`" != x ]
  3580.                 then
  3581.                     echo `$LSUSB -s "$bus:$dev"`
  3582.                 fi
  3583.                 j=$(($j+1))
  3584.             done
  3585.         fi
  3586.     fi
  3587. }
  3588.  
  3589. checkpci() {
  3590.     if [ x"$LSPCI" != x ]
  3591.     then
  3592.         pcinum=`$LSPCI | wc -l`
  3593.         j=1
  3594.         if [ x"`$LSPCI | grep -i "$1"`" != x ]
  3595.         then
  3596.             while [ $j -le $pcinum ]
  3597.             do
  3598.                 if [ x"`$LSPCI | head -n $j | tail -n 1 | grep -i "$1"`" != x ]
  3599.                 then
  3600.                     echo `$LSPCI | head -n $j | tail -n 1`
  3601.                 fi
  3602.                 j=$(($j+1))
  3603.             done
  3604.         fi
  3605.     fi
  3606. }
  3607.  
  3608. checkpcmcia() {
  3609.     if [ x"$LSPCMCIA" != x -a x"$CARDCTL" != x ]
  3610.     then
  3611.         pcmcianum=10
  3612.         j=0
  3613.         if [ x"`$LSPCMCIA -v | grep -i "$1"`" != x ]
  3614.         then
  3615.             while [ $j -le $pcmcianum ]
  3616.             do
  3617.                 manfid=`$CARDCTL ident $j | grep "manfid" | sed 's/^.*: //'`
  3618.  
  3619.                 if [ x"$manfid" == x ]
  3620.                 then
  3621.                     manfid="0x0000, 0x0000"
  3622.                 fi
  3623.  
  3624.                 if [ x"`$CARDCTL ident $j | grep -i "$1"`" != x ]
  3625.                 then
  3626.                     echo "ID:"$manfid "`$CARDCTL ident $j | head -n 1 | sed 's/^.*: //'`"
  3627.                 fi
  3628.                 j=$(($j+1))
  3629.             done
  3630.         fi
  3631.     fi
  3632. }
  3633.  
  3634. detectAdapters() {
  3635.     echo
  3636. #usb
  3637.     if [ x"$LSUSB" != x ]
  3638.     then
  3639.         i=0
  3640.         while [ $i -lt $DCOUNT ]
  3641.         do
  3642.             if [ x"${DETECT_USB[$i]}" != x ]
  3643.             then
  3644.                 if [ x"`$LSUSB -vvv | grep "${DETECT_USB[$i]}"`" != x ]
  3645.                 then
  3646.                     echo "Found \"${DNAME[$i]}\" device: (${DMODULE[$i]})"
  3647.                     checkusb "${DETECT_USB[$i]}"
  3648.                     echo
  3649.                 fi
  3650.             fi
  3651.             i=$(($i+1))
  3652.         done
  3653.     fi
  3654.  
  3655. #pci
  3656.     if [ x"$LSPCI" != x ]
  3657.     then
  3658.         i=0
  3659.         while [ $i -lt $DCOUNT ]
  3660.         do
  3661.             if [ x"${DETECT_PCI[$i]}" != x ]
  3662.             then
  3663.                 if [ x"`$LSPCI | grep "${DETECT_PCI[$i]}"`" != x ]
  3664.                 then
  3665.                     echo "Found \"${DNAME[$i]}\" device: (${DMODULE[$i]})"
  3666.                     checkpci "${DETECT_PCI[$i]}"
  3667.                     echo
  3668.                 fi
  3669.             fi
  3670.             i=$(($i+1))
  3671.         done
  3672.     fi
  3673.  
  3674. #pcmcia
  3675.     if [ x"$LSPCMCIA" != x ]
  3676.     then
  3677.         i=0
  3678.         while [ $i -lt $DCOUNT ]
  3679.         do
  3680.             if [ x"${DETECT_CS[$i]}" != x ]
  3681.             then
  3682.                 if [ x"`$LSPCMCIA -vvv | grep "${DETECT_CS[$i]}"`" != x ]
  3683.                 then
  3684.                     echo "Found \"${DNAME[$i]}\" device: (${DMODULE[$i]})"
  3685.                     checkpcmcia "${DETECT_CS[$i]}"
  3686.                     echo
  3687.                 fi
  3688.             fi
  3689.             i=$(($i+1))
  3690.         done
  3691.     fi
  3692.  
  3693. #generic
  3694.     GENERIC="wireless\|80211\|80211\.11\|wifi\|wlan"
  3695.  
  3696.     #usb
  3697.     if [ x"$LSUSB" != x ]
  3698.     then
  3699.         if [ x"`$LSUSB -vvv | grep -i "$GENERIC"`" != x ]
  3700.         then
  3701.             echo && echo "USB devices (generic detection):"
  3702.             checkusb "$GENERIC"
  3703.         fi
  3704.     fi
  3705.  
  3706.     #pci
  3707.     if [ x"$LSPCI" != x ]
  3708.     then
  3709.         if [ x"`$LSPCI | grep -i "$GENERIC"`" != x ]
  3710.         then
  3711.             echo && echo "PCI devices (generic detection):"
  3712.             checkpci "$GENERIC"
  3713.         fi
  3714.     fi
  3715.  
  3716.     #pcmcia
  3717.     if [ x"$LSPCMCIA" != x -a x"$CARDCTL" != x ]
  3718.     then
  3719.         if [ x"`$LSPCMCIA -v | grep -i "$GENERIC"`" != x ]
  3720.         then
  3721.             echo && echo "PCMCIA devices (generic detection):"
  3722.             checkpcmcia "$GENERIC"
  3723.         fi
  3724.     fi
  3725.  
  3726.     echo
  3727.     return $YES
  3728. }
  3729.  
  3730. name2num() {
  3731.     if [ x"$1" == x ]
  3732.     then
  3733.         return $ERROR
  3734.     fi
  3735.  
  3736.     i=0
  3737.     while [ $i -lt "$DCOUNT" ]
  3738.     do
  3739.         for j in ${DMODULES[$i]}
  3740.         do
  3741.             if [ x"`echo "$1 " | grep -i "$j "`" != x ]
  3742.             then
  3743.                 return $i
  3744.             fi
  3745.         done
  3746.         i=$(($i+1))
  3747.     done
  3748.  
  3749.     return $ERROR
  3750. }
  3751.  
  3752. name2num_stack() {
  3753.     if [ x"$1" == x ]
  3754.     then
  3755.         return $ERROR
  3756.     fi
  3757.  
  3758.     i=0
  3759.     while [ $i -lt "$SCOUNT" ]
  3760.     do
  3761.         for j in ${SMODULES[$i]}
  3762.         do
  3763.             if [ x"`echo "$1 " | grep -i "$j "`" != x ]
  3764.             then
  3765.                 return $i
  3766.             fi
  3767.         done
  3768.         i=$(($i+1))
  3769.     done
  3770.  
  3771.     return $ERROR
  3772. }
  3773.  
  3774. usage() {
  3775.     printf "Found kernel: $VANILLA\n"
  3776.     printf "usage: `basename $0` <command> [drivernumber]\n"
  3777.     printf "\tvalid commands:\n"
  3778.     printf "\t\tsupported\t\t- lists all supported drivers\n"
  3779.     printf "\t\tkernel\t\t\t- lists all in-kernel drivers\n"
  3780.     printf "\t\tinstalled\t\t- lists all installed drivers\n"
  3781.     printf "\t\tloaded\t\t\t- lists all loaded drivers\n"
  3782.     printf "\t\t-----------------------------------------------------\n"
  3783.     printf "\t\tinsert <drivernum>\t- inserts a driver\n"
  3784.     printf "\t\tload <drivernum>\t- loads a driver\n"
  3785.     printf "\t\tunload <drivernum>\t- unloads a driver\n"
  3786.     printf "\t\treload <drivernum>\t- reloads a driver\n"
  3787.     printf "\t\t-----------------------------------------------------\n"
  3788.     printf "\t\tcompile <drivernum>\t- compiles a driver\n"
  3789.     printf "\t\tinstall <drivernum>\t- installs a driver\n"
  3790.     printf "\t\tremove <drivernum>\t- removes a driver\n"
  3791.     printf "\t\t-----------------------------------------------------\n"
  3792.     printf "\t\tcompile_stack <stacknum>\t- compiles a stack \n"
  3793.     printf "\t\tinstall_stack <stacknum>\t- installs a stack \n"
  3794.     printf "\t\tremove_stack <stacknum>\t- removes a stack \n"
  3795.     printf "\t\t-----------------------------------------------------\n"
  3796.     printf "\t\tinstall_firmware <drivernum>\t- installs the firmware \n"
  3797.     printf "\t\tremove_firmware <drivernum>\t- removes the firmware \n"
  3798.     printf "\t\t-----------------------------------------------------\n"
  3799.     printf "\t\tdetails <drivernum>\t- prints driver details\n"
  3800.     printf "\t\tdetect\t\t\t- detects wireless cards\n"
  3801.     echo
  3802.     exit
  3803. }
  3804.  
  3805. #checking main argument(s)
  3806. if [ x"$1" == x ]
  3807. then
  3808.     usage
  3809. fi
  3810.  
  3811. if [ x"$1" == "xsupported" ]
  3812. then
  3813.     listSupportedStacks
  3814.     echo ""
  3815.     listSupportedDrivers
  3816.     exit
  3817. fi
  3818.  
  3819. if [ x"$1" == "xinstalled" ]
  3820. then
  3821.     listInstalledStacks
  3822.     echo ""
  3823.     listInstalledDrivers
  3824.     echo ""
  3825.     listInstalledFirmware
  3826.     exit
  3827. fi
  3828.  
  3829. if [ x"$1" == "xloaded" ]
  3830. then
  3831.     listLoadedStacks
  3832.     echo ""
  3833.     listLoadedDrivers
  3834.     exit
  3835. fi
  3836.  
  3837. if [ x"$1" == "xkernel" ]
  3838. then
  3839.     listKernelStacks
  3840.     echo ""
  3841.     listKernelDrivers
  3842.     exit
  3843. fi
  3844.  
  3845. if [ x"$1" == "xdetect" ]
  3846. then
  3847.     detectAdapters
  3848.     exit
  3849. fi
  3850.  
  3851. if [ x"$1" == "xremove" ]
  3852. then
  3853.     if [ x$2 == "x" ]
  3854.     then
  3855.         echo "$NO_DRIVER_ERROR"
  3856.         exit
  3857.     fi
  3858.  
  3859.     name2num $2
  3860.     num=$?
  3861.  
  3862.     if [ $num -eq $ERROR ]
  3863.     then
  3864.         if [ $2 -ge 0 -a $2 -lt $DCOUNT ] 2>/dev/null
  3865.         then
  3866.             num=$2
  3867.         else
  3868.             echo "Invalid driver!"
  3869.             exit
  3870.         fi
  3871.     fi
  3872.  
  3873.     echo "Driver \"${DNAME[$num]}\" specified for removing."
  3874.  
  3875.     removeDriver $num
  3876.     if [ $? -eq $YES ]
  3877.     then
  3878.         echo "Removed driver \"${DNAME[$num]}\" successfully"
  3879.     else
  3880.         echo "Failed to remove the driver."
  3881.     fi
  3882.     exit
  3883. fi
  3884.  
  3885. if [ x"$1" == "xremove_stack" ]
  3886. then
  3887.     if [ x$2 == "x" ]
  3888.     then
  3889.         echo "$NO_STACK_ERROR"
  3890.         exit
  3891.     fi
  3892.  
  3893.     name2num_stack $2
  3894.     num=$?
  3895.  
  3896.     if [ $num -eq $ERROR ]
  3897.     then
  3898.         if [ $2 -ge 0 -a $2 -lt $SCOUNT ] 2>/dev/null
  3899.         then
  3900.             num=$2
  3901.         else
  3902.             echo "Invalid stack!"
  3903.             exit
  3904.         fi
  3905.     fi
  3906.  
  3907.     echo "Stack \"${SNAME[$num]}\" specified for removing."
  3908.  
  3909.     removeStack $num
  3910.     if [ $? -eq $YES ]
  3911.     then
  3912.         echo "Removed stack \"${SNAME[$num]}\" successfully"
  3913.     else
  3914.         echo "Failed to remove the stack."
  3915.     fi
  3916.     exit
  3917. fi
  3918.  
  3919. if [ x"$1" == "xremove_firmware" ]
  3920. then
  3921.     if [ x$2 == "x" ]
  3922.     then
  3923.         echo "$NO_FIRMWARE_ERROR"
  3924.         exit
  3925.     fi
  3926.  
  3927.     name2num $2
  3928.     num=$?
  3929.  
  3930.     if [ $num -eq $ERROR ]
  3931.     then
  3932.         if [ $2 -ge 0 -a $2 -lt $DCOUNT ] 2>/dev/null
  3933.         then
  3934.             num=$2
  3935.         else
  3936.             echo "Invalid driver!"
  3937.             exit
  3938.         fi
  3939.     fi
  3940.  
  3941.     echo "Firmware \"${DNAME[$num]}\" specified for removing."
  3942.  
  3943.     removeFirmware $num
  3944.     if [ $? -eq $YES ]
  3945.     then
  3946.         echo "Removed firmware \"${DNAME[$num]}\" successfully"
  3947.     else
  3948.         echo "Failed to remove the firmware."
  3949.     fi
  3950.     exit
  3951. fi
  3952.  
  3953. if [ x"$1" == "xinstall" ]
  3954. then
  3955.     if [ x$2 == "x" ]
  3956.     then
  3957.         echo "$NO_DRIVER_ERROR"
  3958.         exit
  3959.     fi
  3960.  
  3961.     name2num $2
  3962.     num=$?
  3963.  
  3964.     if [ $num -eq $ERROR ]
  3965.     then
  3966.         if [ $2 -ge 0 -a $2 -lt $DCOUNT ] 2>/dev/null
  3967.         then
  3968.             num=$2
  3969.         else
  3970.             echo "Invalid driver!"
  3971.             exit
  3972.         fi
  3973.     fi
  3974.  
  3975.     echo "Driver \"${DNAME[$num]}\" specified for installation."
  3976.  
  3977.     NO_INSTALL=$NO
  3978.     NO_FIRMWARE=$NO
  3979.     installDriver $num
  3980.  
  3981.     ret=$?
  3982.  
  3983.     if [ $ret -eq $YES ]
  3984.     then
  3985.         echo "Installed driver \"${DNAME[$num]}\" successfully"
  3986.     else
  3987.         echo "Failed to install the driver."
  3988.         echo "Look through \"$LOGFILE\" for errors."
  3989.     fi
  3990.  
  3991.     if [ $ret == $YES ]
  3992.     then
  3993.         unloadDriver $num >/dev/null 2>/dev/null
  3994.         loadDriver $num
  3995.         if [ $? -eq $YES ]
  3996.         then
  3997.             echo "Loaded driver \"${DNAME[$num]}\" successfully"
  3998.         else
  3999.             echo "Failed to load the driver."
  4000.         fi
  4001.     fi
  4002.  
  4003.     exit
  4004. fi
  4005.  
  4006. if [ x"$1" == "xcompile" ]
  4007. then
  4008.     if [ x$2 == "x" ]
  4009.     then
  4010.         echo "$NO_DRIVER_ERROR"
  4011.         exit
  4012.     fi
  4013.  
  4014.     name2num $2
  4015.     num=$?
  4016.  
  4017.     if [ $num -eq $ERROR ]
  4018.     then
  4019.         if [ $2 -ge 0 -a $2 -lt $DCOUNT ] 2>/dev/null
  4020.         then
  4021.             num=$2
  4022.         else
  4023.             echo "Invalid driver!"
  4024.             exit
  4025.         fi
  4026.     fi
  4027.  
  4028.     echo "Driver \"${DNAME[$num]}\" specified for compilation."
  4029.  
  4030.     NO_INSTALL=$YES
  4031.     NO_FIRMWARE=$NO
  4032.     installDriver $num
  4033.  
  4034.     ret=$?
  4035.  
  4036.     if [ $ret -eq $YES ]
  4037.     then
  4038.         echo "Compiled driver \"${DNAME[$num]}\" successfully"
  4039.     else
  4040.         echo "Failed to compile the driver."
  4041.         echo "Look through \"$LOGFILE\" for errors."
  4042.     fi
  4043.  
  4044.     if [ $ret == $YES ]
  4045.     then
  4046.         unloadDriver $num >/dev/null 2>/dev/null
  4047.         insertDriver $num
  4048.         if [ $? -eq $YES ]
  4049.         then
  4050.             echo "Inserted driver \"${DNAME[$num]}\" successfully"
  4051.         else
  4052.             echo "Failed to insert the driver."
  4053.         fi
  4054.     fi
  4055.  
  4056.     exit
  4057. fi
  4058.  
  4059. if [ x"$1" == "xinstall_stack" ]
  4060. then
  4061.     if [ x$2 == "x" ]
  4062.     then
  4063.         echo "$NO_STACK_ERROR"
  4064.         exit
  4065.     fi
  4066.  
  4067.     name2num_stack $2
  4068.     num=$?
  4069.  
  4070.     if [ $num -eq $ERROR ]
  4071.     then
  4072.         if [ $2 -ge 0 -a $2 -lt $SCOUNT ] 2>/dev/null
  4073.         then
  4074.             num=$2
  4075.         else
  4076.             echo "Invalid stack!"
  4077.             exit
  4078.         fi
  4079.     fi
  4080.  
  4081.     echo "Stack \"${SNAME[$num]}\" specified for installation."
  4082.  
  4083.     NO_INSTALL=$NO
  4084.     NO_FIRMWARE=$YES
  4085.     installStack $num
  4086.  
  4087.     ret=$?
  4088.  
  4089.     if [ $ret -eq $YES ]
  4090.     then
  4091.         echo "Installed stack \"${SNAME[$num]}\" successfully"
  4092.         echo "You need to reload the complete stack, or just reboot."
  4093.     else
  4094.         echo "Failed to install the stack."
  4095.         echo "Look through \"$LOGFILE\" for errors."
  4096.     fi
  4097.  
  4098.     exit
  4099. fi
  4100.  
  4101. if [ x"$1" == "xinstall_firmware" ]
  4102. then
  4103.     if [ x$2 == "x" ]
  4104.     then
  4105.         echo "$NO_FIRMWARE_ERROR"
  4106.         exit
  4107.     fi
  4108.  
  4109.     name2num $2
  4110.     num=$?
  4111.  
  4112.     if [ $num -eq $ERROR ]
  4113.     then
  4114.         if [ $2 -ge 0 -a $2 -lt $DCOUNT ] 2>/dev/null
  4115.         then
  4116.             num=$2
  4117.         else
  4118.             echo "Invalid driver!"
  4119.             exit
  4120.         fi
  4121.     fi
  4122.  
  4123.     echo "Firmware \"${DNAME[$num]}\" specified for installation."
  4124.  
  4125.     installFirmware $num
  4126.     if [ $? -eq $YES ]
  4127.     then
  4128.         echo "Installed firmware \"${DNAME[$num]}\" successfully"
  4129.     else
  4130.         echo "Failed to install the firmware."
  4131.         echo "Look through \"$LOGFILE\" for errors."
  4132.     fi
  4133.  
  4134.     exit
  4135. fi
  4136.  
  4137. if [ x"$1" == "xcompile_stack" ]
  4138. then
  4139.     if [ x$2 == "x" ]
  4140.     then
  4141.         echo "$NO_STACK_ERROR"
  4142.         exit
  4143.     fi
  4144.  
  4145.     name2num_stack $2
  4146.     num=$?
  4147.  
  4148.     if [ $num -eq $ERROR ]
  4149.     then
  4150.         if [ $2 -ge 0 -a $2 -lt $SCOUNT ] 2>/dev/null
  4151.         then
  4152.             num=$2
  4153.         else
  4154.             echo "Invalid stack!"
  4155.             exit
  4156.         fi
  4157.     fi
  4158.  
  4159.     echo "Stack \"${SNAME[$num]}\" specified for compilation."
  4160.  
  4161.     NO_INSTALL=$YES
  4162.     NO_FIRMWARE=$YES
  4163.     installStack $num
  4164.  
  4165.     ret=$?
  4166.  
  4167.     if [ $ret -eq $YES ]
  4168.     then
  4169.         echo "Compiled stack \"${SNAME[$num]}\" successfully"
  4170.         echo "You need to insert the Stack manually"
  4171.     else
  4172.         echo "Failed to compile the stack."
  4173.         echo "Look through \"$LOGFILE\" for errors."
  4174.     fi
  4175.  
  4176.     exit
  4177. fi
  4178.  
  4179. if [ x"$1" == "xload" ]
  4180. then
  4181.     if [ x$2 == "x" ]
  4182.     then
  4183.         echo "$NO_DRIVER_ERROR"
  4184.         exit
  4185.     fi
  4186.  
  4187.     name2num $2
  4188.     num=$?
  4189.  
  4190.     if [ $num -eq $ERROR ]
  4191.     then
  4192.         if [ $2 -ge 0 -a $2 -lt $DCOUNT ] 2>/dev/null
  4193.         then
  4194.             num=$2
  4195.         else
  4196.             echo "Invalid driver!"
  4197.             exit
  4198.         fi
  4199.     fi
  4200.  
  4201.     echo "Driver \"${DNAME[$num]}\" specified for loading."
  4202.  
  4203.     loadDriver $num
  4204.     if [ $? -eq $YES ]
  4205.     then
  4206.         echo "Loaded driver \"${DNAME[$num]}\" successfully"
  4207.     else
  4208.         echo "Failed to load the driver."
  4209.     fi
  4210.     exit
  4211. fi
  4212.  
  4213. if [ x"$1" == "xinsert" ]
  4214. then
  4215.     if [ x$2 == "x" ]
  4216.     then
  4217.         echo "$NO_DRIVER_ERROR"
  4218.         exit
  4219.     fi
  4220.  
  4221.     name2num $2
  4222.     num=$?
  4223.  
  4224.     if [ $num -eq $ERROR ]
  4225.     then
  4226.         if [ $2 -ge 0 -a $2 -lt $DCOUNT ] 2>/dev/null
  4227.         then
  4228.             num=$2
  4229.         else
  4230.             echo "Invalid driver!"
  4231.             exit
  4232.         fi
  4233.     fi
  4234.  
  4235.     echo "Driver \"${DNAME[$num]}\" specified for inserting."
  4236.  
  4237.     insertDriver $num
  4238.     if [ $? -eq $YES ]
  4239.     then
  4240.         echo "Inserted driver \"${DNAME[$num]}\" successfully"
  4241.     else
  4242.         echo "Failed to insert the driver."
  4243.     fi
  4244.     exit
  4245. fi
  4246.  
  4247. if [ x"$1" == "xunload" ]
  4248. then
  4249.     if [ x$2 == "x" ]
  4250.     then
  4251.         echo "$NO_DRIVER_ERROR"
  4252.         exit
  4253.     fi
  4254.  
  4255.     name2num $2
  4256.     num=$?
  4257.  
  4258.     if [ $num -eq $ERROR ]
  4259.     then
  4260.         if [ $2 -ge 0 -a $2 -lt $DCOUNT ] 2>/dev/null
  4261.         then
  4262.             num=$2
  4263.         else
  4264.             echo "Invalid driver!"
  4265.             exit
  4266.         fi
  4267.     fi
  4268.  
  4269.     echo "Driver \"${DNAME[$num]}\" specified for unloading."
  4270.  
  4271.     unloadDriver $num
  4272.     if [ $? -eq $YES ]
  4273.     then
  4274.         echo "Unloaded driver \"${DNAME[$num]}\" successfully"
  4275.     else
  4276.         echo "Failed to unload the driver."
  4277.     fi
  4278.     exit
  4279. fi
  4280.  
  4281. if [ x"$1" == "xreload" ]
  4282. then
  4283.     if [ x$2 == "x" ]
  4284.     then
  4285.         echo "$NO_DRIVER_ERROR"
  4286.         exit
  4287.     fi
  4288.  
  4289.     name2num $2
  4290.     num=$?
  4291.  
  4292.     if [ $num -eq $ERROR ]
  4293.     then
  4294.         if [ $2 -ge 0 -a $2 -lt $DCOUNT ] 2>/dev/null
  4295.         then
  4296.             num=$2
  4297.         else
  4298.             echo "Invalid driver!"
  4299.             exit
  4300.         fi
  4301.     fi
  4302.  
  4303.     echo "Driver \"${DNAME[$num]}\" specified for reloading."
  4304.  
  4305.     unloadDriver $num
  4306.     if [ $? -ne $YES ]
  4307.     then
  4308.         echo "Failed to unload the driver."
  4309.         exit
  4310.     fi
  4311.  
  4312.     isLoaded $num "D"
  4313.     if [ $? -eq $YES ]
  4314.     then
  4315.         echo "Failed to unload the driver."
  4316.         exit
  4317.     fi
  4318.  
  4319.     loadDriver $num
  4320.     if [ $? -ne $YES ]
  4321.     then
  4322.         echo "Failed to reload the driver."
  4323.         exit
  4324.     else
  4325.         echo "Reloaded driver \"${DNAME[$num]}\" successfully"
  4326.     fi
  4327.  
  4328.     exit
  4329. fi
  4330.  
  4331. if [ x"$1" == "xdetails" ]
  4332. then
  4333.     if [ x$2 == "x" ]
  4334.     then
  4335.         echo "$NO_DRIVER_ERROR"
  4336.         exit
  4337.     fi
  4338.  
  4339.     name2num $2
  4340.     num=$?
  4341.  
  4342.     if [ $num -eq $ERROR ]
  4343.     then
  4344.         if [ $2 -ge 0 -a $2 -lt $DCOUNT ] 2>/dev/null
  4345.         then
  4346.             num=$2
  4347.         else
  4348.             echo "Invalid driver!"
  4349.             exit
  4350.         fi
  4351.     fi
  4352.  
  4353.     echo "Driver details for: \"${DNAME[$num]}\""
  4354.     echo
  4355.  
  4356.     printf "Compiled into kernel:\t"
  4357.     isInKernel $num "D"
  4358.     if [ $? -eq $YES ]
  4359.     then
  4360.         echo "YES"
  4361.     else
  4362.         echo "No"
  4363.     fi
  4364.  
  4365.     printf "Installed:\t\t"
  4366.     isInstalled $num "D"
  4367.     if [ $? -eq $YES ]
  4368.     then
  4369.         echo "YES"
  4370.     else
  4371.         echo "No"
  4372.     fi
  4373.  
  4374.     printf "Loaded:\t\t\t"
  4375.     isLoaded $num "D"
  4376.     if [ $? -eq $YES ]
  4377.     then
  4378.         echo "YES"
  4379.     else
  4380.         echo "No"
  4381.     fi
  4382.  
  4383.     printf "Firmware installed:\t"
  4384.     isInstalledFirmware $num
  4385.     ret=$?
  4386.     if [ $ret -eq $YES ]
  4387.     then
  4388.         echo "YES"
  4389.     else
  4390.         if [ $ret -eq $NO ]
  4391.         then
  4392.             echo "No"
  4393.         else
  4394.             echo "N/A"
  4395.         fi
  4396.     fi
  4397.  
  4398.     echo
  4399.     echo "Modules:"
  4400.  
  4401.     echo
  4402.     echo "Modules:"
  4403.     for i in ${DMODULES[$num]}
  4404.     do
  4405.         i="`echo "$i" | sed 's/-/_/'`"
  4406.         echo -n "$i "
  4407.     done
  4408.     echo
  4409.     echo
  4410.  
  4411.     echo "Files:"
  4412.     for i in ${DMODULES[$num]}
  4413.     do
  4414.         mfile="`$MODPROBE -l | grep \/$i\.ko`"
  4415.         if [ x"$mfile" != x ]
  4416.         then
  4417.             mtime="`ls -l $mfile | awk '{print $6" "$7}'`"
  4418.             echo $mfile $mtime
  4419.         fi
  4420.     done
  4421.     echo
  4422.  
  4423.     modinfo ${DMODULE[$num]} 2>/dev/null | grep "^ver\|^depends"
  4424.  
  4425.     echo
  4426.     if [ x${DSITE[$num]} != x ]
  4427.     then
  4428.         echo "For more information see:"
  4429.         echo ${DSITE[$num]}
  4430.     fi
  4431.     exit
  4432. fi
  4433.  
  4434. usage
  4435.